Androidアプリケーション開発の複数選択削除の1つ


コンベヤー?ドア 𗺷 輪子のコラム 𗺷 転載は明記してください 𗺷 http://blog.csdn.net/leverage_1229
        今日、CheckBoxを使用して連絡先レコードの複数選択削除を実現する方法を学びます.複数選択削除機能は、通常、CheckBox実装とActonBar実装の2つのソリューションがあります.私はCheckBoxスタイルのマルチモードが好きです.それは比較的柔軟で変化が多いため、スタイルの変換も簡単です.ActionBarのマルチ選択スタイル変換は相対的に作業量が多い.
1ケース技術のポイント(整理待ち)
2ケースコード陳列
プロジェクトパッケージカタログ
AndroidManifest.xml
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="cn.lynn.multisel"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="15" />
    <uses-permission android:name="android.permission.READ_CONTACTS" />
    <uses-permission android:name="android.permission.WRITE_CONTACTS" />
    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name" >
        <activity
            android:name=".MultiSelectDeleteActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>
strings.xml
<resources>

    <string name="app_name">CheckBox         </string>
    <string name="delete">  </string>
    <string name="cancel">  </string>
    <string name="select_all_text">  </string>
    <string name="clearConfirmation_title">  </string>
    <string name="clearConfirmation">          </string>
    <string name="clearProgress_title">    …</string>

</resources>
styles.xml
<resources xmlns:android="http://schemas.android.com/apk/res/android">

    <style name="CheckBoxTheme" parent="@android:style/Widget.CompoundButton.CheckBox">
        <item name="android:button">@drawable/checkbox_selector</item>
    </style>

    <style name="ButtonBarTheme" parent="@android:style/ButtonBar">
        <item name="android:background">#006699</item>
    </style>
</resources>
main.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" >

    <include
        android:id="@+id/select_all"
        layout="@layout/select_all" />

    <ListView
        android:id="@+id/del_list"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:background="#ffffff"
        android:cacheColorHint="#00000000"
        android:listSelector="#00000000" />

    <LinearLayout
        style="@style/ButtonBarTheme"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >

        <Button
            android:id="@+id/del_btn"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:enabled="false"
            android:text="@string/delete" />

        <Button
            android:id="@+id/can_btn"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="@string/cancel" />
    </LinearLayout>

</LinearLayout>
list_item.xm
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_centerVertical="true"
    android:descendantFocusability="blocksDescendants"
    android:gravity="center_vertical"
    android:orientation="horizontal"
    android:background="#66ccff" >
    
    <CheckBox
        android:id="@+id/select_chk"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:clickable="false"
        android:focusable="false"
        android:focusableInTouchMode="false"
        android:visibility="visible"
        style="@style/CheckBoxTheme"
        android:layout_alignParentLeft="true"
        android:layout_marginLeft="10dp" />

    <TextView
        android:id="@+id/name_txt"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignRight="@id/select_chk"
        android:layout_marginRight="230dp"
        android:layout_centerVertical="true"
        android:singleLine="true"
        android:textSize="18sp"
        android:textColor="#ffffff" />

</RelativeLayout>
select_all.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="wrap_content"
    android:gravity="center_vertical"
    android:background="#006699" >

    <CheckBox
        android:id="@+id/select_all_chk"
        style="@style/CheckBoxTheme"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="10dp" />
    
    <TextView
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_margin="10dp"
        android:layout_weight="1"
        android:text="@string/select_all_text"
        android:textColor="@android:color/white"
        android:textSize="20sp" />

</LinearLayout>
checkbox_selector.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:drawable="@drawable/checkbox_pressed" android:state_checked="true"/>
    <item android:drawable="@drawable/checkbox_normal" android:state_checked="false"/>
    <item android:drawable="@drawable/checkbox_normal"/>

</selector>