Hallo
ich fülle mit einem SimpleCursorAdapter über ein SearchView ein ListView
Der Adapter, mit dem ich nur die Checkbox einbinde, ist:
In der xml-Datei fts_card befinden sich neben verschiedenen TextViews auch
die Checkbox
Einlesen und Wiedergabe funktionieren einwandfrei, es wird auch nach setChecked der CheckBox die rowId
zurückgegeben.
Allerdings werden jeweils mehrere dcheckBoxen wie sich beim Scrollen zeigt, selektiert und nicht nzr
die selektierte.
Wie kann ixh das abstellen ? Wie binde ich die CheckBox in meinem Adapter richtig an ?
Ich schlage mich jetzt schon längere Zeit damit herum, bin aber bisher auf keine Lösing gekommen.
Deswegen frage ich.
VG
ich fülle mit einem SimpleCursorAdapter über ein SearchView ein ListView
Code:
fts_my_adapter = new FTS_Adapter(getActivity(), R.layout.fts_card, crs, from, to); searchLv.setAdapter(fts_my_adapter);
Code:
public class FTS_Adapter extends SimpleCursorAdapter { Context context; ViewHolder vh; String rowID; public FTS_Adapter(Context context, int layout, Cursor cursor, String[] from, int[] to) { super(context, layout, cursor, from, to); this.context = context; } @Override public View newView(Context context, Cursor cursor, ViewGroup parent) { return LayoutInflater.from(context).inflate(R.layout.fts_card, parent, false); } @Override public void bindView(final View view, Context context, final Cursor cursor) { super.bindView(view, context, cursor); vh = (ViewHolder) view.getTag(); if (vh == null) { vh = new ViewHolder(); vh.fts_Wichtig = (CheckBox) view.findViewById(R.id.fts_chBoxWichtig); vh.id = cursor.getString(cursor.getColumnIndexOrThrow("_id")); rowID = vh.id; view.setTag(R.id.fts_chBoxWichtig, vh.fts_Wichtig); } vh.fts_Wichtig.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { CheckBox cb = (CheckBox) view.getTag(R.id.fts_chBoxWichtig); if (cb.isChecked()) { vh.fts_Wichtig.setChecked(true); Toast.makeText(view.getContext(), rowID, Toast.LENGTH_SHORT).show(); } else { vh.fts_Wichtig.setChecked(false); } } }); } static class ViewHolder { CheckBox fts_Wichtig; String id; String wichtig; } }
die Checkbox
Code:
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/relRL" android:layout_width="match_parent" android:layout_height="wrap_content"> <android.support.v7.widget.CardView android:id="@+id/cardView" android:layout_width="match_parent" android:layout_height="wrap_content"> <RelativeLayout android:id="@+id/RL" android:layout_width="match_parent" android:layout_height="wrap_content" > <TextView> tv1,tv2 usw. </TextView> <CheckBox android:id="@+id/fts_chBoxWichtig" android:layout_height="wrap_content" android:layout_width="wrap_content" /> </RelativeLayout> </android.support.v7.widget.CardView> </RelativeLayout>
Einlesen und Wiedergabe funktionieren einwandfrei, es wird auch nach setChecked der CheckBox die rowId
zurückgegeben.
Allerdings werden jeweils mehrere dcheckBoxen wie sich beim Scrollen zeigt, selektiert und nicht nzr
die selektierte.
Wie kann ixh das abstellen ? Wie binde ich die CheckBox in meinem Adapter richtig an ?
Ich schlage mich jetzt schon längere Zeit damit herum, bin aber bisher auf keine Lösing gekommen.
Deswegen frage ich.
VG