更新#2我有一个listView和一个适配器。listView中的每个项目都有一个复选框。当单击列表视图中的复选框时,下面的复选框5-6个项目(重复-所有复选框)也看起来是按下的-灯亮着,即使没有人点击,当检查它是否真的用“isChecked”bool标志按下时,它是false。
公共类watchAllAdapter扩展ArrayAdapter {
public watchAllAdapter(Context context, ArrayList<Subject> arrayList) {
super(context, 0, arrayList);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View listItemView = convertView;
if (listItemView == null) {
listItemView = LayoutInflater.from(getContext()).inflate(
R.layout.for_each_watch_all, parent, false);
}
final Subject currSubject = getItem(position);
final CheckBox cb = (CheckBox) listItemView.findViewById(R.id.checkbox_for_each);
cb.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView,boolean isChecked) {
if (isChecked){
currSubject.setChosen(true);
}
else{
cb.setChecked(false);
currSubject.setChosen(false);
}
}
});
return listItemView;
}
谢谢=]
如果我是你,我会建议使用...
if(cb.isChecked()) {
currSubject.setChosen(true);
}
else if (!cb.isChecked()) {
currSubject.setChosen(false);
}
尝试遵循View Holder模式。创建一个Holder类并在视图不为空的情况下重用该视图。如果视图已经存在,请将onCheckedChangedListener()复选框设置为空。
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View listItemView = convertView;
Holder holder = null;
if (listItemView == null) {
listItemView = LayoutInflater.from(getContext()).inflate(
R.layout.for_each_watch_all, parent, false);
holder = new Holder();
holder.ckbox =(CheckBox)row.findViewById(R.id.check_box_id);
listItemView .setTag(holder);
}else {
holder = (Holder) listItemView.getTag();
holder.ckbox.setOnCheckedChangeListener(null);
}
final Subject currSubject = getItem(position);
final CheckBox cb = (CheckBox) listItemView.findViewById(R.id.checkbox_for_each);
cb.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView,boolean isChecked) {
if (isChecked){
currSubject.setChosen(true);
}
else{
cb.setChecked(false);
currSubject.setChosen(false);
}
}
});
return listItemView;
}
private class ViewHolder {
CheckBox checkBox;
}
我正在尝试将ListView与fragmnet中的自定义适配器(baseAdapter)一起使用。 当我直接在MainActivity中使用此代码时,一切正常,但当我在片段中使用此代码时,它没有崩溃,但它没有显示任何内容,它只是一个空白片段。另外,当我尝试使用简单的arrayAdapter在片段中绑定一个textView时,它工作得很好,所以我认为问题将出现在我的自定义适配器中。 为什么不显示Li
问题内容: 我希望ListView包含按钮,但是设置按钮的xml属性onClick =“ myFunction”,然后在活动中放置公共void myFunction(android.view.View view)方法会导致NoSuchMethodException(堆栈跟踪为null)就像onclick侦听器在那里一样被抛出,它不会触发myFunction(…)并导致活动关闭。 如何创建将View
我试图在按钮单击事件上清除Popup=>ListView中的选中复选框。 我尝试过循环listview并将property设置为false,但这不起作用。 在此处输入代码x:class=“uc.mainpage”xmlns=“http://schemas.microsoft.com/winfx/2006/xaml/presentation”xmlns:x=“http://schemas.micro
问题内容: 这是我遵循的使用自定义Listview适配器的教程。我遇到的问题是,当我尝试清除适配器时,应用程序崩溃并抛出 更新的代码: 问题答案: 环顾四周,似乎是使用数组初始化适配器。请参阅带有ArrayAdapter.remove的UnsupportedOperationException和无法在ListView中修改ArrayAdapter:UnsupportedOperationExcep
我尝试按照幻灯片youtube 6部分教程创建一个带有自定义行的列表视图。在他的教程中,他使用了1个图像和2个文本视图,我需要3个图像和3个文本视图,当我运行应用程序时,它在尝试加载列表视图时崩溃。 -------------家庭单行.xml----------------------- - Homelistview.xml - Homeactivitylistview.java 04-22 15
我有一块碎片。加载的视图的onCreateView方法上的这个片段有一个ListView(a)(在适配器(a)中填充)。但是,此ListView(A)中有另一个ListView(B)。所以现在,我必须调用适配器(B)来填充这个listview(B)。如果我从片段调用它,我会得到一个空指针,如果我从适配器调用它(a),它不会崩溃,但不会工作。 如何调用另一个适配器中的适配器。 这是片段的代码: 其中