我检查了数组menuItems,它似乎很好,但在下面的代码中有错误。 当我开始它看起来还好,但是当我开始滚动它被搞砸了,并把项目的列表和重复项的顶部....这为什么我会在我的listview中获得重复项目?
public class ScoresAdapter extends BaseAdapter {
private MainActivity activity;
private ScoreItem[] menuItems;
private static LayoutInflater inflater=null;
ImageDownloader downloader;
public ScoresAdapter(MainActivity a, ScoreItem[] scoreItems) {
activity = a;
menuItems = scoreItems;
inflater = (LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
downloader = new ImageDownloader();
}
public int getCount() {
int teller = 0;
for(int i = 0 ; menuItems.length > i ; i++){
if(menuItems[i] != null){
teller++;
}
}
return teller;
}
public Object getItem(int position) {
return position;
}
public long getItemId(int position) {
return position;
}
public View getView(final int position, View convertView, ViewGroup parent) {
View vi=convertView;
if(convertView==null){
if(menuItems[position].getId() == 888){
//fav header
vi = inflater.inflate(R.layout.scoresheaderfavoriet, null);
}else if(menuItems[position].getId() == 999){
//overige header
vi = inflater.inflate(R.layout.scoresheaderoverig, null);
}else{
if(menuItems[position].getIsFav()){
vi = inflater.inflate(R.layout.scoresfavitem, null);
}else{
vi = inflater.inflate(R.layout.scoresitem, null);
}
TextView text2=(TextView)vi.findViewById(R.id.position);
text2.setText(""+ menuItems[position].getPosition());
TextView text=(TextView)vi.findViewById(R.id.name);
text.setText(menuItems[position].getFirstName() + " " + menuItems[position].getLastName().toUpperCase());
TextView text5=(TextView)vi.findViewById(R.id.country);
text5.setText(""+ menuItems[position].getCountry());
TextView text3=(TextView)vi.findViewById(R.id.score);
text3.setText(""+ menuItems[position].getScore());
TextView text8=(TextView)vi.findViewById(R.id.hole);
text8.setText(""+ menuItems[position].getHole());
vi.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
Intent intent = new Intent(v.getContext(), SpelerView.class);
intent.putExtra("id", menuItems[position].getId());
v.getContext().startActivity(intent);
activity.sluitAlleMenus();
}
});
}
}
return vi;
}
}
如果convertView不是null你什么都不做吧,但你应该。 convertView - 是不在屏幕上的回收物品。您已经将数据传递给它。所以,你应该改变这些数据。 – bluebyte 2012-07-19 15:42:17
@Jay Biggue如果你已经解决然后发布我有同样的问题 – PankajAndroid 2013-10-18 12:04:32