0

Listviewユーザーが削除するエントリを選択できる削除モードを有効にする可能性があるAndroidに実装したいと思います。これは、Android のメッセージ アプリケーションに似ているはずです。

ListActivity左側にアイコン、右側にテキストがあるを既に持っています。CheckBoxリストエントリの右側にフローティングを追加したいと思います。私のListActivity友人による別の質問にリストされています:android listactivity background color

レイアウトは次のようになります。

  • の写真
  • センターリスト項目
  • 選択を削除するための右のチェックボックス

どうすればこれを達成できますか?使用できるフレームワークの標準ListViewアイテムはありますか?

4

2 に答える 2

1

CheckBoxからアイテムを削除するときだけ を表示させたいと思いますListView。他の質問のレイアウトを使用すると仮定します:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:padding="5dp"
    android:background="@color/darkbluelogo" >

    <ImageView android:id="@+id/list_image"
        android:layout_width="48dip"
        android:layout_height="48dip"
        android:contentDescription="@id/list_image"
         />
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical"
        android:layout_width="0dp"
        android:layout_weight="1"
        android:layout_height="fill_parent"
        android:padding="5dp" 
        android:background="@color/darkbluelogo"
        android:scrollingCache="false" 
        android:cacheColorHint="#00000000" >

        <TextView
            android:id="@+id/title"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:text="@+id/title" >
        </TextView>

        <TextView
            android:id="@+id/datetime"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:text="@+id/datetime" >
        </TextView>

    </LinearLayout>
       <CheckBox
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:visibility="gone" />
</LinearLayout>

ListView開始すると、CheckBoxは存在せず、コンテンツTextViewsがすべてのスペースを占有します。 を表示する必要があることを知らせるフラグをgetViewアダプタのメソッドに追加します (ここでは、レイアウトからの可視性を可視に設定します)。アイテムを削除するときは、フラグを変更して呼び出し、今回は現在の子を再描画します。CheckBoxCheckBoxnotifyDataSetChanged()ListViewCheckBox

注:CheckBoxes自分自身のステータスを保存する必要があります。

于 2012-05-03T12:44:05.183 に答える
0

まず、リスト エントリのカスタム レイアウトが必要です。ImageView 、 TextView 、および CheckBox を含む単純な RelativeLayout で十分です。

次に、BaseAdapter (または SimpleAdapter または CursorAdapter または ArrayAdapter など) を拡張できる独自のカスタム アダプターを作成することができます。アダプターは、リストのデータをカスタム レイアウトにバインドします。たとえば、データが Cursor に含まれている場合、次のようになります。

private class MyCustomAdapter extends CursorAdapter {

        public MyCustomAdapter(Context context) {
            super(context, null);
        }


        @Override
        public View newView(Context context, Cursor cursor, ViewGroup parent) {

            //Return a list item view
            return getLayoutInflater().inflate(R.layout.my_custom_list_item_layout, parent, false);

        }

        @Override
        public void bindView(View view, Context context, Cursor cursor) {

            //Get views from layout
            final ImageView imageView = (ImageView) view.findViewById(R.id.list_item_image);
            final TextView textView = (TextView) view.findViewById(R.id.list_item_text);
            final CheckBox checkBox = (CheckBox) view.findViewById(R.id.list_item_checkbox);


            //Get data from cursor
            final String text = cursor.getString(...); 

            //Add listener to the checkbox
            checkBox.setOnClickListener(new OnClickListener() {...});

            //Bind data
            textView.setText(text);
        }
    }
于 2012-05-03T12:23:18.783 に答える