我有一个ListView,每行都有一个TextView和一个Checkbox。我正在尝试创建一个序列,用户必须单击第一行的复选框以启用下一行并删除灰显效果。单击此行中的复选框将对下一行执行相同操作,依此类推。
这可能吗?怎么样?
答案 0 :(得分:1)
创建自定义Object
以保持行的状态。例如:
class Row {
private TextView text;
private CheckBox box;
private boolean grayedOut;
//implementation...
}
在Activity
的{{1}}内,您可以ArrayList<Row>()
作为Adapter
ListView
的来源。
onCreate(..){
mArrayList = new ArrayList<Row>();
// fill arraylist
Adapter mAdapter = new CustomAdapter(... , ... , mArrayList);
ListView lv = findView..
lv.setAdapter(mAdapter);
}
Adapter
的{{1}}是自定义的。您可以按照here找到的示例进行操作。在您的情况下,将进行一些调整:
ListView
现在我们有一个public class CustomAdapter extends ArrayAdapter<Row>{
public CustomAdapter(...) {
// do stuff
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// ....
if (item at position has gray state){
set layout to gray
} else {
set layout to active
}
// ....
return row;
}
,一个Listview
,对于列表中的每个项目,我们都有CustomAdapter
提供某种状态。默认情况下,除第一项外,所有状态都将设置为灰色状态。使用Row
,我们可以解锁其他项目..
onItemClickedListener
祝你好运!