0

私はcursoradapterを使用してデータベースから値を取得し、それをリストビューに表示しています。特定のアイテムのクリックでもデータベースの内容をリストビューで表示できます。クリックされたアイテムの値を取得しています。チェックされたアイテムの値を取得します(この場合、チェックボックスのクリックとlistitemclickの両方が機能するはずです)可能ですか?どうやってするの?

private void displayListView() {
        final Cursor cursor = dbHelper.fetchAllRecords();
        String[] columns = new String[] {
                RecordsDbAdapter.KEY_NAME,
                RecordsDbAdapter.KEY_BIRTHDAY,

        };
        int[] to = new int[] {
                R.id.name,
                R.id.birthdate,
        };
        dataAdapter = new SimpleCursorAdapter(
                this, R.layout.rownew,
                cursor,
                columns,    
                to);
        View v = getLayoutInflater().inflate(R.layout.customdialog, null);
        ListView listView = (ListView) v.findViewById(R.id.listChildren);
        final EditText etChild = (EditText) v.findViewById(R.id.etChild);
        listView.setAdapter(dataAdapter);
        listView.setOnItemClickListener(new OnItemClickListener() {
            public void onItemClick(AdapterView<?> parent, View view,
                    int position, long id) {
                name = ((TextView) view.findViewById(R.id.name)) .getText().toString();
                BirtDate = ((TextView) view.findViewById(R.id.birthdate)) .getText().toString();
                Log.d("*************", name);

                Info=name+ " " +BirtDate;
                Log.d("nameeeeeeeeeeeeeeee",Info);
                etChild.setText(new StringBuilder().append(Info));
                topaste=etChild.getText().toString();
                    etChild.setText(new StringBuilder().append(Info1));
                //                  topaste1=etChild.getText().toString();
                //              }


            }
        })

私のrownew.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_gravity="center_horizontal"
    android:background="#FFFFFF"
    android:gravity="center"
    android:padding="6dp" >

    <TextView
        android:id="@+id/name"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/text"
        android:textStyle="bold" >
    </TextView>

    <TextView
        android:id="@+id/birthdate"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="10dp"
        android:text="@string/text"
        android:textStyle="bold" >
    </TextView>


</LinearLayout>

私のCustomdialog.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <EditText
        android:id="@+id/etChild"
         android:hint=""
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:ems="10" >
    </EditText>

    <ListView
        android:id="@+id/listChildren"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="#FFFFFF" >
    </ListView>
  </LinearLayout>
4

1 に答える 1

0

SimpleCursorAdapterチェックボックスのクリックリスナーを追加するように拡張できます。これが私が使用するコードの抜粋です:

public class MultiSelectCursorAdapter extends SimpleCursorAdapter {

  public MultiSelectCursorAdapter(Context context, int layout, Cursor c, String[] from, int[] to, int flags) {
        super(context, layout, c, from, to, flags);
    }

  @Override
  public View getView(int position, View convertView, ViewGroup parent) {
    final int fposition = position;
    View view = super.getView(position, convertView, parent);
    CheckBox checkbox = (CheckBox) view.findViewById(R.id.list_checkbox);
    checkbox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
            Log.d("CHECKER", "Something happened: " + fposition + " was clicked " + isChecked);
            // TODO: store id of checked items in your model
            }

    });

    return view;
    }
}

リスト行のレイアウトでは、リストアイテムのクリックと、各リストアイテムのチェックボックスのクリックandroid:focusable="false"を許可するように設定する必要があります。

<CheckBox
        android:id="@+id/list_checkbox"
        android:focusable="false" 
        ... >
</CheckBox>

最後に、リストのすべてのチェック済みアイテムを格納するためのモデルまたはデータ構造が必要です。たとえば、すべてのチェック済みアイテムの識別子を格納する配列またはリストです。

于 2012-11-01T09:10:53.520 に答える