(我已经看到了这个类似的问题)我有一个ListView
我已经为它编写了一个自定义适配器和一个onitemclicklistener
. I'm having an issue where, when any element of the list is selected, getView
is called (twice) for each of the top 4 elements of the ListView
, even if those elements are not visible. 即使我不调用notifyDataSetChanged
适配器也会发生这种情况——前 4 个视图无论如何都会被获取两次。这是正常行为吗?我的问题不在于为它们调用了两次,而是在不需要更新它们时根本调用了它。
顺便说一句,我没有使用 wrap_content 作为列表视图的高度或宽度——高度是 match_parent,宽度是固定数量的 dp。
OnItemClickListener的onItemClick()
方法在这里:
public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
mPicture = pictures[position];
mPicturesAdapter.setCurrentPicture(mPicture);
mPicturesAdapter.notifyDataSetChanged();
}
getView()
来自我的自定义适配器(扩展 BaseAdapter)在这里:
public View getView(int position, View convertView, ViewGroup parent) {
Log.v("tag", "Getting view for position "+position);
LayoutInflater inflater = LayoutInflater.from(mContext);
LinearLayout layout = (LinearLayout)
inflater.inflate(R.layout.picture_thumbnail, parent, false);
// set up the linearlayout here ...
return layout;
}
在任何项目单击时,无论单击哪个项目,都会为位置 0 - 3 调用 getView() 两次。