我试图制作自己的自定义适配器,但我的位置有些问题。运行此代码后,我有奇数输出。在我的列表中,我有30个元素,但我的位置仅从0到4,打印的元素数是15而不是30.这段代码有什么问题?我查了一切!
所以我展示了我遇到这个问题的地方
Log.d(TAG,String.valueOf(position)); //0,1,2,3,4,0,1,2,3,4....0,1,2,3,4
Log.d(TAG, String.valueOf(gitRepositoryItemList.size())); //30 elements
像这样。
第一行给出15个输出,值为0到4。
第二个输出结果给出了30。
WTF!?!?!?!
这是代码:
public class GitCustomAdapter extends BaseAdapter{
public static final String TAG = GitCustomAdapter.class.getSimpleName();
private LayoutInflater inflater;
private List<GitRepositoryItem> gitRepositoryItemList;
//ImageLoader imageLoader = VolleySingleton.getInstance(mContext).getImageLoader();
public GitCustomAdapter(Context mContext, List<GitRepositoryItem> gitRepositoryItemsList) {
this.gitRepositoryItemList = gitRepositoryItemsList;
inflater = LayoutInflater.from(mContext);
}
@Override
public int getCount() {
return gitRepositoryItemList.size();
}
@Override
public GitRepositoryItem getItem(int position) {
return gitRepositoryItemList.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent)
//this method executes 15 times only while it should be executed 30 times
if (convertView == null){
convertView = inflater.inflate(R.layout.list_item,null);
}
Log.d(TAG,String.valueOf(position)); //0,1,2,3,4,0,1,2,3,4....0,1,2,3,4
Log.d(TAG, String.valueOf(gitRepositoryItemList.size())); //30 elements
return convertView;
}
}
此外,您可以在此处查看我的输出: