我在自定义对话框中有一个单选按钮和文本视图。它有大约 250 个项目,所以我使用的是列表视图。
我在单选按钮上设置 OnCheckedStateListener,每当状态改变时,我都会在侦听器中关闭对话框。我将一项设置为默认选中。
但是,每当我第二次打开对话框时,都会在对话框打开之前调用 OnCheckedStateListener 并且整个应用程序崩溃。
我正在关注持有人视图模式。有人可以通过一些示例代码向我建议在这种情况下使用视图持有者模式的正确方法,或者您能否指出网络上的任何好材料。
在发布这个问题之前,我进行了很多搜索。但没有任何帮助。
提前致谢。
编辑:
我也尝试过onclickListener
,但是当我在对话框的可见视图中选择最顶部或底部的选项时,有时它不起作用......奇怪......也一样onFocusChangeListener
。
编辑:
if (row == null) {
LayoutInflater inflater = ((Activity) context).getLayoutInflater();
row = inflater.inflate(layoutResourceId, parent, false);
holder = new RecordHolder();
holder.txtTitle = (TextView) row.findViewById(R.id.item_text);
holder.radiobutton = (RadioButton)row.findViewById(R.id.radiobutton);
holder.radiobutton.setOnCheckedChangeListener(new
CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView,
boolean isChecked) {
if(buttonView.isChecked()){
// this call back listener will dismiss the dialog
// from the fragement where I have called
mCallbackListnr.stateUpdated(pPosition);
}
}});
row.setTag(holder);
} else {
holder = (RecordHolder) row.getTag();
}
Item item = data.get(position);
// i am setting the state as checked here
if(item.id.equals(selectedItem.id)){
holder.radiobutton.setChecked(true);
}else{
holder.radiobutton.setChecked(false);
}
holder.txtTitle.setText(item.getTitle());
}