2013-02-25 93 views
0

请帮助,这个(可能很简单)的问题让我发疯。如何在列表视图中选择适当的复选框

我有一个自定义的listview包含textview和复选框。 我想在复选框被选中时对listview元素进行一个操作。我试图使用下面的代码,但事情是我不知道如何检测哪个特定的复选框被点击。

checkBox = (CheckBox) findViewById(R.id.textCheckbox); 
checkBox.setOnCheckedChangeListener(this); 

public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 
    if (isChecked) 
     make some action 
    else 
     make another action 
} 

我也试图让复选框上OnItemLongClickListener反应:

OnItemLongClickListener LongListener = new OnItemLongClickListener() { 
    @Override 
    public boolean onItemLongClick(AdapterView<?> a, View v, int position, long id) { 
     CheckBox checkBox = (CheckBox) v.findViewById(R.id.textCheckbox); 
     listView = (ListView) a; 
     checkBox.setChecked(true); 
     return true; 
    } 
}; 

这样我可以检查一个适当的复选框,当我做一个列表视图项longclick,但只要我向下滚动该列表中,复选框从它的位置移动。

请指教!

+0

http://lalit3686.blogspot.in/2012/06/today-i-am-going-to-show-how- to-deal.html – moDev 2013-02-25 20:15:42

+0

你在你的行中使用了什么布局,它是否实现可检查? – Sam 2013-02-25 20:15:57

+0

我同意你@Sam – moDev 2013-02-25 20:20:34

回答

0

,最好的办法是更新的基础数据和呼叫notifyDatasetChanged()

OnItemLongClickListener LongListener = new OnItemLongClickListener() { 
@Override 
    public boolean onItemLongClick(AdapterView<?> a, View v, int position, long id) { 
     someListWithYourData.get(position).setSomething(true); // Now your data reflects the change 
     yourAdapter.notifyDataSetChanged(); 
     return true; 
    } 
}; 
+0

感谢您的及时回答!如果我写 listView.get(position).setSomething(true); 我得到一个错误,“方法get(int)未定义类型ListView”。我能做什么? 还有一个更愚蠢的问题:'setSomething'是什么意思? setChecked?你在哪些数据上建立你的ListView的 – Juta 2013-02-25 20:52:03

+0

?你将哪些数据提供给适配器? – znat 2013-02-25 20:59:38

+0

我有一个数据列表列表 – Juta 2013-02-25 21:03:54

相关问题