0

複数の選択肢があるリストビューを使用し、内部の検索方法をオーバーライドします。スクロール中にアイテムの位置が変わったという点で、アイテムに問題があります。問題はレイアウトにあると思います。レイアウトにリストビューのみが含まれている場合、正しく機能するからです。しかし、以下のレイアウトを使用すると、スクロール中にチェックされるアイテムの位置が変更されます。

誰でもそれを手伝ってもらえますか?

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
      android:orientation="vertical"
      android:layout_width="fill_parent"
      android:layout_height="fill_parent">

    <EditText
        android:id="@+id/editText1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:layout_toLeftOf="@+id/button1" />


    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true"
        android:text="Button" />

    <ListView
        android:id="@+id/MyListView"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/editText1" />

</RelativeLayout>
4

1 に答える 1

0

チェックボックスの状態を追跡するには、アダプタにオブジェクトを設定する必要があります。アダプターコードを表示していないので、コードの一部から例を引き出します(これはカーソルを使用しており、ArrayAdapterに適合させることができます)

カスタムアダプタでアレイを設定します。

private Cursor c; 
public static int[] checked; 

コンストラクターで、カーソルをローカル変数に設定し、メソッドを呼び出します。

CursorAdapter_EditText.c = c; 
initializeChecked(); 

メソッド(0を使用=チェックされていません):

public static void initializeChecked() { 
    checked = new int[c.getCount()]; 
    int i = 0; 
    while (i < c.getCount()) { 
        checked[i] = 0; 
        i++; 
    } 
} 

getView配列を使用して、チェックボックスの状態を設定します。

checkBox = (CheckBox) view.findViewById(R.id.CheckBox); 
if (checked(position) == 0) { 
    checkBox.setChecked(false); 
} else { 
    checkBox.setChecked(true); 
}  

checkBox.setOnCheckedChangeListenerチェックボックスの状態を変更するときに配列の状態を変更するためにも、コードを追加する必要があります。

于 2012-05-30T14:08:20.583 に答える