gpt4 book ai didi

Android LazyList ListView 的初始加载在滚动之前不显示图像

转载 作者:太空狗 更新时间:2023-10-29 15:26:59 28 4
gpt4 key购买 nike

我目前正在使用此处的 LazyList View :https://github.com/thest1/LazyList

除了 ListView 的初始加载,一切都很好。没有图像正在加载。我实际上必须向下滚动然后向上滚动才能填充图像。下面是我正在使用的适配器的代码。我在这里做错了什么?

更新:请注意,我取出了 ImageView 的标签以查看它是否有帮助,但我仍然得到相同的结果。

public class BattleAdapter extends ArrayAdapter<Battle> {

private ArrayList<Battle> data = null;
private Context context;
private int layoutResourceId;
private ImageLoader imageLoader;

public BattleAdapter(Context context, int layoutResourceId,
ArrayList<Battle> data) {
super(context, layoutResourceId, data);
this.layoutResourceId = layoutResourceId;
this.context = context;
this.data = data;
this.imageLoader = new ImageLoader(context);
}

static class BattleHolder {
public CropImageView imageRight;
public CropImageView imageLeft;
public TextView displayNameRight;
public TextView displayNameLeft;
public TextView numComments;
public TextView numVotes;
public TextView timeLeft;
public ImageView winnerImg1;
public TextView winnerTxt1;
public ImageView winnerImg2;
public TextView winnerTxt2;
public TextView tiedTxt1;
public TextView tiedTxt2;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {

BattleHolder holder = null;

if (convertView == null) {

LayoutInflater inflater = ((Activity) context).getLayoutInflater();
holder = new BattleHolder();

convertView = inflater.inflate(R.layout.versus_list_item, null);
holder.imageLeft = (CropImageView) convertView
.findViewById(R.id.versus_challenger);
holder.imageLeft.setClickable(false);
holder.imageRight = (CropImageView) convertView
.findViewById(R.id.versus_challenged);
holder.imageRight.setClickable(false);
holder.displayNameLeft = (TextView) convertView
.findViewById(R.id.versus_challenger_name);
holder.displayNameRight = (TextView) convertView
.findViewById(R.id.versus_challenged_name);
holder.numVotes = (TextView) convertView
.findViewById(R.id.num_votes);
holder.numComments = (TextView) convertView
.findViewById(R.id.num_comments);
holder.timeLeft = (TextView) convertView
.findViewById(R.id.time_left);
holder.winnerImg1 = (ImageView) convertView
.findViewById(R.id.winner_img1);
holder.winnerImg2 = (ImageView) convertView
.findViewById(R.id.winner_img2);
holder.winnerTxt1 = (TextView) convertView
.findViewById(R.id.winner_img1_txt);
holder.winnerTxt2 = (TextView) convertView
.findViewById(R.id.winner_img2_txt);
holder.tiedTxt1 = (TextView) convertView
.findViewById(R.id.tie_txt1);
holder.tiedTxt2 = (TextView) convertView
.findViewById(R.id.tie_txt2);
holder.timeLeft.setSelected(true);

convertView.setTag(holder);
} else {
holder = (BattleHolder) convertView.getTag();
}

Battle battle = data.get(position);

if (battle != null) {

User challenger = battle.getChallenger();
User challenged = battle.getChallenged();

holder.displayNameLeft.setText(challenger.getDisplayName());

holder.displayNameRight.setText(challenged.getDisplayName());

holder.numComments.setText(Integer.toString(battle
.getCommentCount()));
holder.numVotes.setText(Integer.toString(battle.getVoteCount()));

if (battle.getTimeLeft() != null) {

if (battle.getTimeLeft().startsWith("-")) {
holder.timeLeft.setText("Time's up. Calculating winner");
} else if (battle.getTimeLeft().endsWith("responded")) {

String newString = String.format(battle.getTimeLeft(),
challenged.getDisplayName());
holder.timeLeft.setText(newString);

} else
holder.timeLeft.setText(battle.getTimeLeft());
}

imageLoader.DisplayImage(challenger.getPicPath(), holder.imageLeft);

imageLoader.DisplayImage(challenged.getPicPath(), holder.imageRight);

if (battle.getWinnerID() == -5) {
holder.winnerImg1.setVisibility(View.VISIBLE);
holder.winnerImg2.setVisibility(View.VISIBLE);
holder.winnerTxt2.setVisibility(View.INVISIBLE);
holder.winnerTxt1.setVisibility(View.INVISIBLE);
holder.tiedTxt1.setVisibility(View.VISIBLE);
holder.tiedTxt2.setVisibility(View.VISIBLE);
}

if (battle.getWinnerID() != 0 && battle.getWinnerID() != -1) {

if (challenger.getUserID() == battle.getWinnerID()) {
holder.winnerImg1.setVisibility(View.VISIBLE);
holder.winnerTxt1.setVisibility(View.VISIBLE);
holder.winnerImg2.setVisibility(View.VISIBLE);
holder.winnerTxt2.setVisibility(View.INVISIBLE);
holder.tiedTxt1.setVisibility(View.INVISIBLE);
holder.tiedTxt2.setVisibility(View.INVISIBLE);

}

else if (challenged.getUserID() == battle.getWinnerID()) {
holder.winnerImg2.setVisibility(View.VISIBLE);
holder.winnerTxt2.setVisibility(View.VISIBLE);
holder.winnerImg1.setVisibility(View.VISIBLE);
holder.winnerTxt1.setVisibility(View.INVISIBLE);
holder.tiedTxt1.setVisibility(View.INVISIBLE);
holder.tiedTxt2.setVisibility(View.INVISIBLE);

}
}

if (battle.getWinnerID() == 0 || battle.getWinnerID() == -1) {
holder.winnerImg1.setVisibility(View.INVISIBLE);
holder.winnerTxt1.setVisibility(View.INVISIBLE);
holder.winnerImg2.setVisibility(View.INVISIBLE);
holder.winnerTxt2.setVisibility(View.INVISIBLE);
holder.tiedTxt1.setVisibility(View.INVISIBLE);
holder.tiedTxt2.setVisibility(View.INVISIBLE);
Log.i("BattleAdapter", "No winner");
}

}

return convertView;
}
}

最佳答案

为此使用 AndroidQuery。 ImageLoader 不是通用的ImageLoader,Android 为我们提供了AndroidQuery 及其awsom 来使用,非常快速和高效。

从这里下载 jar:http://code.google.com/p/android-query/将此 jar 添加到您的构建路径。

private AQuery androidAQuery;
androidAQuery=new AQuery(this);
androidAQuery.id(YOUR IMAGE VIEW).image(YOUR IMAGE URL, true, true,DEFUALT IMAGE(optional));

关于Android LazyList ListView 的初始加载在滚动之前不显示图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18997131/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com