簡體   English   中英

Android ListView itemClick問題

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM