ตัวอย่างการคืนค่าตำแหน่งของ Item ที่ถูกเลือกอยู่ใน ListView กรณีเลือกได้หลายตัวเืลือก : Android
 

Tutorial :: Android :: ตัวอย่างการใช้งาน :: ตัวอย่างการคืนค่าตำแหน่งของ Item ที่ถูกเลือกอยู่ใน ListView กรณีเลือกได้หลายตัวเืลือก

ในบทความนี้ จะแสดงให้เห็นถึงตัวอย่างการคืนค่าตำแหน่งของ Item ที่ถูกเลือกอยู่ใน ListView กรณีเลือกได้หลายตัวเืลือก โดยจะแสดงให้เห็นถึงการเขียนคำสั่งภายใน Class Activity, การเขียนคำสั่งภายในไฟล์ XML Layout, การเขียนคำสั่งภายในไฟล์ XML Strings, และการประกาศ Activity ไว้ภายในไฟล์ AndroidManifest.xml ดังนี้


การเขียนคำสั่งภายใน Class Activity

  • package nutt.me.activity;
  •  
  • import android.app.Activity;
  • import android.os.Bundle;
  • import android.util.SparseBooleanArray;
  • import android.view.View;
  • import android.widget.ArrayAdapter;
  • import android.widget.Button;
  • import android.widget.ListView;
  • import android.widget.TextView;
  • import android.widget.Toast;
  •  
  • public class MainActivity extends Activity
  • {
  • public void onCreate ( Bundle savedInstanceState )
  • {
  • super.onCreate ( savedInstanceState );
  •  
  • this.setContentView ( R.layout.activity_main );
  •  
  •  
  • String [ ] list = getResources ( ).getStringArray ( R.array.listview_list );
  •  
  • ArrayAdapter < String > dataAdapter = new ArrayAdapter < String > ( this, android.R.layout.simple_list_item_multiple_choice, list );
  •  
  •  
  • ListView listview = ( ListView ) this.findViewById ( R.id.listview );
  •  
  • listview.setAdapter ( dataAdapter );
  •  
  • listview.setChoiceMode ( ListView.CHOICE_MODE_MULTIPLE );
  •  
  •  
  • Button button = ( Button ) this.findViewById ( R.id.button );
  •  
  • button.setOnClickListener ( new View.OnClickListener ( )
  • {
  • public void onClick ( View v )
  • {
  • ListView listview = ( ListView ) MainActivity.this.findViewById ( R.id.listview );
  •  
  • SparseBooleanArray checkedPositions = listview.getCheckedItemPositions ( );
  •  
  •  
  • String checkedText = "";
  •  
  • int count = checkedPositions.size ( );
  •  
  • for ( int i = 0; i < count; i++ )
  • {
  • int checkedPosition = checkedPositions.keyAt ( i );
  •  
  •  
  • if ( listview.isItemChecked ( checkedPosition ) )
  • {
  • TextView checkedView = ( TextView ) listview.getChildAt ( checkedPosition );
  •  
  • checkedText = checkedText + " " + checkedView.getText ( ).toString ( );
  • }
  • }
  •  
  •  
  • if ( checkedText.equals ( "" ) )
  • {
  • Toast toast = Toast.makeText ( MainActivity.this, "No Item Checked", Toast.LENGTH_LONG );
  •  
  • toast.show ( );
  • }
  • else
  • {
  • Toast toast = Toast.makeText ( MainActivity.this, "Checked" + checkedText, Toast.LENGTH_LONG );
  •  
  • toast.show ( );
  • }
  • }
  • }
  • );
  • }
  • }

จากคำสั่งข้างต้น สามารถอธิบายได้ว่า คำสั่ง ListView listview = ( ListView ) MainActivity.this.findViewById ( R.id.listview ); ในบรรทัดที่ 40 เป็นการสร้าง Object ListView โดยการไปค้นหามาจาก XML Layout และคำสั่ง SparseBooleanArray checkedPositions = listview.getCheckedItemPositions ( ); ในบรรทัดที่ 42 เป็นการคืนค่าตำแหน่งของ Item ที่ถูกเลือกอยู่ใน ListView กรณีเลือกได้หลายตัวเลือก แล้วนำค่าที่ได้มาเก็บไว้ที่ตัวแปรประเภท SparseBooleanArray


การเขียนคำสั่งภายในไฟล์ XML Layout

  • <?xml version="1.0" encoding="utf-8"?>
  • <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  • android:layout_width="fill_parent"
  • android:layout_height="fill_parent">
  •  
  • <ListView
  • android:id="@+id/listview"
  • android:layout_width="fill_parent"
  • android:layout_height="wrap_content" />
  •  
  • <Button
  • android:id="@+id/button"
  • android:layout_below="@id/listview"
  • android:layout_marginTop="10dp"
  • android:layout_width="wrap_content"
  • android:layout_height="wrap_content"
  • android:layout_centerHorizontal="true"
  • android:text="Show Checked Label" />
  •  
  • </RelativeLayout>

จากคำสั่งข้างต้น สามารถอธิบายได้ว่า element <ListView> มี id คือ listview (ประกาศไว้ในบรรทัดที่ 7) และ element <Button> มี id คือ button (ประกาศไว้ในบรรทัดที่ 12) ซึ่ง id เหล่านี้ถูกใช้อ้างอิงใน Class Activity ข้างต้น


การเขียนคำสั่งภายในไฟล์ XML Strings

  • <?xml version="1.0" encoding="utf-8"?>
  • <resources>
  •  
  • <string name="app_name">ListView</string>
  •  
  • <string-array name="listview_list">
  • <item>Blue</item>
  • <item>Green</item>
  • <item>Brown</item>
  • </string-array>
  •  
  • </resources>

จากคำสั่งข้างต้น สามารถอธิบายได้ว่า ให้ตั้งชื่อไฟล์คือ strings.xml และจัดเก็บไว้ใน Resource Folder ชื่อ "res/values"


การประกาศ Activity ไว้ภายในไฟล์ AndroidManifest.xml

  • <?xml version="1.0" encoding="utf-8"?>
  • <manifest ... >
  • <application ... >
  • <activity android:name="nutt.me.activity.MainActivity" ... >
  • <intent-filter>
  • <action android:name="android.intent.action.MAIN" />
  • <category android:name="android.intent.category.LAUNCHER" />
  • </intent-filter>
  • </activity>
  • </application>
  • </manifest>

จากคำสั่งข้างต้น สามารถอธิบายได้ว่า มีการประกาศ Activity ชื่อ MainActivity ที่อยู่ใน Package nutt.me.activity ไว้ภายในไฟล์ AndroidManifest.xml ในบรรทัดที่ 4


หน้าจอแสดงผลของ ตัวอย่างการคืนค่าตำแหน่งของ Item ที่ถูกเลือกอยู่ใน ListView กรณีเลือกได้หลายตัวเืลือก จากการเขียนคำสั่งข้างต้น

หน้าจอแสดงผลของ ตัวอย่างการคืนค่าตำแหน่งของ Item ที่ถูกเลือกอยู่ใน ListView กรณีเลือกได้หลายตัวเืลือก

จากรูปแสดงหน้าจอของ MainActivity

หน้าจอแสดงผลของ ตัวอย่างการคืนค่าตำแหน่งของ Item ที่ถูกเลือกอยู่ใน ListView กรณีเลือกได้หลายตัวเืลือก

จากรูปแสดงหน้าจอของ MainActivity เมื่อได้เลือก Item "Blue" ที่ ListView แล้วได้คลิกที่ปุ่ม "Show Checked Label"

หน้าจอแสดงผลของ ตัวอย่างการคืนค่าตำแหน่งของ Item ที่ถูกเลือกอยู่ใน ListView กรณีเลือกได้หลายตัวเืลือก

จากรูปแสดงหน้าจอของ MainActivity เมื่อได้เลือก Item "Blue" และ Item "Green" ที่ ListView แล้วได้คลิกที่ปุ่ม "Show Checked Label"

Download This Example

0 Comment

  • Have no comment.

Comment Tutorial

 
 
 
 
Share This Topic Login with Facebook