簡體   English   中英

具有Checkbox奇怪行為的ListView片段

[英]Fragment ListView with Checkbox strange behavior

我有一個Fragment內部擴展了FragmentList CheckboxListView 奇怪的行為是單擊一個項目時會檢查多個項目。 奇怪的是,滾動列表時,某些項目會自動被選擇或取消選擇,而我沒有設置ScrollListener

這是代碼:

@Override
public void onStart() {
    super.onStart();
    getListView().setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
            CheckBox mCheckBox = (CheckBox) view.findViewById(R.id.chk);
            if (mCheckBox.isChecked()) {
                mCheckBox.setChecked(false);
                getListView().setItemChecked(i, false);
            } else {
                mCheckBox.setChecked(true);
                getListView().setItemChecked(i, true);
            }
            mCallback.onArticleSelected(i, isChoice);
        }
    });
}

必填: 圖片http://windrealm.org/tutorials/android/planets-fragmentactivity.png

滾動時, ListView的項目會回收。 您應該將一個boolean參數(isChecked)放入ListView行對象,然后在getView方法中,您應該使用該boolean參數初始化CheckBox 例如:

假設您的行對象:

public class Trial{

    public String title;

    public boolean isChecked;

}

ListView適配器的getView方法中,應檢查對象的isChecked參數:

@Override
public View getView(int position, View convertView, ViewGroup parent) {

    LayoutInflater inflater = ((Activity) context).getLayoutInflater();
    View view = inflater.inflate(R.layout.your_listview_item, parent, false);

    Trial item = items.get(position);

    yourHolder.checkBox = (CheckBox) view.findViewById(R.id.chk);
    yourHolder.checkBox.setChecked(item.isChecked);

    return view;
}

祝好運。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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