03 พฤศจิกายน 2556

[Android Code] เปลี่ยนตัวหนังสือใน List View โดยไม่ต้องทำ Custom List View


        จริงๆแล้วบทความนี้เจ้าของบล็อกน่าจะทำตั้งนานแล้วนะ ควรจะทำก่อนบทความ Custom List View ด้วยซ้ำ แต่ลืมซะงั้น โดยเป็นเรื่องการเปลี่ยนคุณสมบัติของ Text View ใน List View


        เดิมทีนั้น List View โดยปกติ ตัวอักษรจะไม่ค่อยถูกใจอยู่แล้ว ซึ่งผู้ที่หลงเข้ามาอ่านก็อยากจะเปลี่ยนตัวอักษรเป็นสีอื่นบ้าง ขนาดใหญ่กว่านี้บ้าง หรืออยู่ตรงกลางของ List View บ้าง มักจะเข้าใจกันว่า ถ้าจะทำแบบนั้น ต้องทำ Custom List View ซึ่งจริงๆแล้ว ไม่จำเป็นต้องทำ Custom List View ก็ได้ ถ้าแค่อยากจะเปลี่ยน Properties ของ Text View เท่านั้น

        โดยจะใช้วิธีสร้าง Layout ของ Text View ขึ้นมา แล้วนำไปกำหนดเป็น Text View ให้กับ List View แทน เนื่องจากเป็นการสร้าง Layout ขึ้นมาใช้ใน List View ดังนั้นผู้ที่หลงเข้ามาอ่านจึงสามารถกำหนด Properties ได้ อย่างเช่น ขนาดตัวอักษร สีตัวอักษร สีพื้นหลัง เป็นต้น

        โดยตัวอย่างนี้เจ้าของบล็อกสร้าง Layout ชื่อว่า listview_textview.xml กำหนดให้เป็นตัวหนังสือสีเขียวขนาด 20sp อยู่กึ่งกลางของ Layout


listview_textview.xml
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/textView1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:padding="10dp"
    android:gravity="center"
    android:text="TextView"
    android:textColor="#FFA800"
    android:textSize="20sp" >
</TextView>



        ไม่ว่าจะกำหนด Text View ยังไงก็ตาม เน้นแค่ว่าต้องมีชื่อ ID เป็น textView1 เท่านั้นนะครับ ส่วนหน้า Layout หลักจะไม่มีอะไรนะ มีแค่ List View


main.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:padding="30dp" >

    <ListView
        android:id="@+id/listView1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true" />

</RelativeLayout>



        ทีนี้ก็ข้ามมาดูที่โค๊ดของ List View กันเลยดีกว่า


Main.java
package app.akexorcist.listviewcustomtextview;

import android.os.Bundle;
import android.app.Activity;
import android.widget.ArrayAdapter;
import android.widget.ListView;

public class Main extends Activity {

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        String[] arr_data = { "aaaa", "bbbb", "cccc", "dddd", "eeee" };
        
        ArrayAdapter<String> mAdapter = new ArrayAdapter<String>(this
                , R.layout.listview_textview, arr_data);

        ListView listView1 = (ListView)findViewById(R.id.listView1);
        listView1.setAdapter(mAdapter);
    }
}

        โค๊ดก็ไม่มีอะไรมากแค่ให้ List View แสดง String จำนวน 5 บรรทัด แต่ทีนี้ให้สังเกตที่ตัวหนังสือสีแดงที่กำหนดเป็น Layout ที่สร้างไว้ ถ้าผู้ที่หลงเข้ามาอ่านจำได้ ปกติจะเป็น android.R.layout.simple_list_item_1 ซึ่งอันนั้นเป็น Layout สำหรับ List View ที่แอนดรอยด์มีไว้ให้แล้ว แต่ทีนี้เมื่อต้องการกำหนด Text View ที่สร้างขึ้นมา ก็แค่เปลี่ยนตรงนี้ก็ได้แล้ว


<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="app.akexorcist.listviewcustomtextview"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="19" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="app.akexorcist.listviewcustomtextview.Main"
            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>


        เมื่อลองทดสอบดูก็จะเห็นว่าText View ใน List View เป็นไปตามที่กำหนด



        จะเห็นว่าบทความรอบนี้ค่อนข้างเรียบง่ายมากไม่มีอะไรให้ซับซ้อน ก็เลยไม่ต้องอธิบายมากนัก สำหรับผู้ที่หลงเข้ามาอ่านที่ต้องการไฟล์ตัวอย่างสามารถดาวน์โหลดได้ที่ List View Custom Text View [Google Drive]




เหล่าพันธมิตรแอนดรอยด์

Devahoy Layer Net NuuNeoI The Cheese Factory Somkiat CC Mart Routine Artit-K Arnondora Kamonway Try to be android developer Oatrice Benz Nest Studios Kotchaphan@Medium Jirawatee@Medium Travispea@Medium