Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Android

Cách xử lý sự kiện click trên ListView trong Android

Giới thiệu

Hướng dẫn này trình bày cách bắt và xử lý sự kiện nhấn (click) vào các mục trong ListView Android.

Các bước thực hiện

Bước 1: Tạo dự án mới

Mở Android Studio, chọn File → New Project và điền thông tin cần thiết.

Bước 2: Thiết kế giao diện (res/layout/activity_main.xml)

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="https://schemas.android.com/apk/res/android"
    xmlns:tools="https://schemas.android.com/tools"
    android:id="@+id/rl"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:padding="10dp"
    tools:context=".MainActivity">
    <TextView
        android:id="@+id/textview"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textStyle="italic"
        android:textColor="#5f65ff"
        android:padding="5dp"
        android:text="Cầu thủ xuất sắc nhất?"/>
    <ListView
        android:id="@+id/listview"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/textview" />
</RelativeLayout>

Bước 3: Viết logic xử lý (src/MainActivity.java)

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        ListView listView = findViewById(R.id.listview);
        final TextView textView = findViewById(R.id.textview);
        
        String[] players = {"CR7", "Messi", "Hazard", "Neymar"};
        List<String> playersList = new ArrayList<>(Arrays.asList(players));
        
        ArrayAdapter<String> arrayAdapter = new ArrayAdapter<>(
            this, 
            android.R.layout.simple_list_item_1, 
            playersList
        );
        listView.setAdapter(arrayAdapter);
        
        // Xử lý sự kiện click item
        listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                String selectedItem = (String) parent.getItemAtPosition(position);
                textView.setText("Cầu thủ xuất sắc nhất: " + selectedItem);
            }
        });
    }
}

Bước 4: Cấu hình Manifest (androidManifest.xml)

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="https://schemas.android.com/apk/res/android"
    package="app.com.sample">
    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
</manifest>

Giải thích

  • Sử dụng setOnItemClickListener() để đăng ký listener
  • Phương thức onItemClick() cung cấp: parent (ListView), view (item view), position (vị trí), id (row id)
  • Lấy item được chọn qua parent.getItemAtPosition(position)

Chạy ứng dụng

Kết nối thiết bị Android, nhấn Run trong Android Studio. Nhấn vào các tên cầu thủ để xem TextView cập nhật.

Cách xử lý sự kiện click trên ListView trong Android

Cách xử lý sự kiện click trên ListView trong Android