这是一个难以解释的情况。我有一个主要活动,其中包含操作栏选项卡以循环遍历不同的片段。加载的第一个选项卡式片段具有可以使用复选框滚动的列表视图。当你第一次运行应用程序时会发生什么,如果你点击一个复选框,它就不会检查。但是,如果您单击另一个选项卡,然后单击后退一切正常。
我已经看过许多其他情况,人们没有复选框使用滚动视图,我已经实施了他们的解决方案,所以我会认为我的情况也是固定的,因为它适用于你的工作标签结束后。
有关为什么第一次加载视图时它会工作的任何想法?我知道这是一个难以回答的问题,我不认为发布代码真的会有所帮助。谢谢你们。
编辑:
这是onCheckedChangedListener
public OnCheckedChangeListener checkboxContactsCallback = new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if(isChecked) {
System.out.println("Checkbox checked");
objects.getContactList().getContactList().get((Integer)buttonView.getTag(R.string.position)).setCheckbox(true);
if(keyStoreContacts.getPublicKeyStore().size() == 0) {
LinearLayout layout = (LinearLayout) rootView.findViewById(R.id.contactsWrapperLayout);
layout.addView(helpers.getInterfaceHelper().createDynamicButton("Delete Contact", checkboxButtonListener));
}
keyStoreContacts.addPublicKey((String)buttonView.getTag(R.string.publickey));
}
else if(!isChecked) {
System.out.println("Checkbox unchecked");
objects.getContactList().getContactList().get((Integer)buttonView.getTag(R.string.position)).setCheckbox(false);
if(keyStoreContacts.getPublicKeyStore().size() <= 1) {
LinearLayout layout = (LinearLayout) rootView.findViewById(R.id.contactsWrapperLayout);
LinearLayout layout2 = (LinearLayout)layout.findViewById(1);
layout.removeView(layout2);
}
keyStoreContacts.removePublicKey((String)buttonView.getTag(R.string.publickey));
}
}
};
这是我的数组适配器中的getView方法
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = (LayoutInflater) act.getBaseContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View rowView = inflater.inflate(R.layout.inflatable_contact_view, parent, false);
TextView textView = (TextView) rowView.findViewById(R.id.inflate_textview);
CheckBox checkbox = (CheckBox)rowView.findViewById(R.id.checkbox);
System.out.println("Setting the checkbox " + objects.getContactList().getContactList().get(position).getIsChecked());
checkbox.setChecked(objects.getContactList().getContactList().get(position).getIsChecked());
checkbox.setOnCheckedChangeListener(callback.getCheckboxListener());
checkbox.setTag(R.string.publickey, objects.getContactList().getContactList().get(position).getPublicKey());
checkbox.setTag(R.string.position, position);
textView.setText(objects.getContactList().getContactList().get(position).getDisplayName());
PublicKeyStore keyStore = new PublicKeyStore();
keyStore.addPublicKey(objects.getContactList().getContactList().get(position).getPublicKey());
contact.setTag(keyStore);
return rowView;
}
答案 0 :(得分:0)
只需将OnCheckedChangeListener
替换为View.OnClickListener
就可以看起来像这样
checkBox.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Checkable checkable = (Checkable) v;
if (checkable.isChecked()) {
} else {
}
}
});