片段ListView与Checkbox奇怪的行为

时间:2016-12-27 10:19:55

标签: android listview android-fragments

ListView Checkbox Fragment FragmentListScrollListener延伸@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); } }); } 。奇怪的行为是在单击一个项目时检查多个项目。 奇怪的是,当滚动列表时,会自动选择或取消选择某个项目,并且我没有设置var optionAppend = ''; $.each(data,function(i,el){ optionAppend += '<option value="'+el.Value+'">'+el.Text+'</option>'; }); $('#StartLocation').append(optionAppend);

以下是代码:

tem(graph(_, E)), adjacent(a, b, E).

必需: image http://windrealm.org/tutorials/android/planets-fragmentactivity.png

1 个答案:

答案 0 :(得分:0)

当您滚动时,

ListView的项目会回收。您应该在boolean行对象中添加ListView参数(isChecked),然后在getView方法中,您应该使用CheckBox参数初始化boolean。例如:

假设您的行对象:

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;
}
祝你好运。