私はFragmentにリストビューを持ち、そこにはアイテムをチェックすることができ、クリックされたアイテムを示すボタンがあります。しかし、アイテムのチェックを外してボタンを押すと、まだチェックされているように表示されます。何が問題を解決することができますか?ListViewのOnClick Buttonが正しく機能していません
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view=inflater.inflate(R.layout.feat, container, false);
final ListView list=(ListView)view.findViewById(R.id.listView1);
final Button button=(Button)view.findViewById(R.id.button1);
list.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
list.setItemChecked(4, true);
ArrayAdapter<String> adapter=new ArrayAdapter<String>(getActivity(),android.R.layout.simple_list_item_multiple_choice,items);
list.setAdapter(adapter);
SparseBooleanArray checked = list.getCheckedItemPositions();
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
switch (arg0.getId()) {
case R.id.button1:
SparseBooleanArray a = list.getCheckedItemPositions();
if (checked(a) > 0) {
String vCheckedList = "";
for (int i = 0; i < list.getAdapter().getCount(); i++) {
if (a.valueAt(i) && i < list.getAdapter().getCount() && a.size() > 1)
vCheckedList += list.getAdapter().getItem(a.keyAt(i)) + "\n";
else if (a.valueAt(i))
vCheckedList += list.getAdapter().getItem(a.keyAt(i));
}
Toast.makeText(getActivity().getApplicationContext(), vCheckedList + " is checked", Toast.LENGTH_SHORT).show();
a.clear();
} else
Toast.makeText(getActivity().getApplicationContext(), "No Item is Selected", Toast.LENGTH_SHORT).show();
break;
default:
break;
}
}
});
return view;
}
そして、ここでされているXML: `
<!-- TODO: Update blank fragment layout -->
<ListView
android:id="@+id/listView1"
android:layout_width="match_parent"
android:layout_height="382dp">
</ListView>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Search"
android:id="@+id/button1"
android:layout_gravity="center_horizontal|bottom" />
おかげで、試してみてください。 –