[英]Android ListView itemClick Issue
有人可以向我解釋這個問題嗎?
我有一個列表視圖,其中包含的行數多於屏幕可顯示的行數,因此滾動。 如果我點擊一個項目,我會替換屬於每一行的圖標。 這一切都有效。
我遇到的問題是當我點擊時說出第一個項目時,我會更改第一行的圖標。 當我現在向下滾動時,我看到可見視口外的第一行也改變了圖標。
為什么會發生這種情況,我該如何避免這個問題呢?
在此先感謝Mozzak
只是為了確保,您正在使用實現ListAdapter的類或擴展其他類型的適配器嗎?
使用適配器時,您必須記住ListView中的視圖被回收以節省內存。 因此,您需要將狀態存儲在單獨的變量中。
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null)
{
LayoutInflater inflator = (LayoutInflater)parent.getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflator.inflate(R.layout.listitem, null);
}
// Retreive my image that may or may not change
ImageView myIcon = (ImageView) convertView.findViewById(R.id.iconView);
// Checking my stored boolean for this position to see if I need to use icon2 or icon
if (myItem[position].needsIconChanged)
{
// I have set my boolean, so use icon2
myIcon.setImageResource(R.drawable.icon2);
}
else
{
// I have not set my boolean, or set it to false so set it to icon
myIcon.setImageResource(R.drawable.icon);
}
return convertView;
}
您還必須記住在onItemCLick中設置該布爾值
public void onItemClick(AdapterView<?> myAdapter, View myView, int position, long arg3) {
// Retreive your item and set a boolean or icon state (depending on what you do)
myAdapter.getItemAtPosition(position).needsIconChanged = true;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.