Header Ads

Xử lý xự kiện bấm vào Listview trong app Todo

Khi bấm vào ListView chúng ta sẽ xử lý xự kiện, và chuyền sang một màn hình mới và chuyển dữ liệu sang

event button


Yêu cầu bạn cần phải học và làm xong bài Custom listview, hoặc hiển thị được listview rồi.Bước một bàn cần tạo một màn hình mới để hiện thi thông tin chi tiết của Todo khi bấm vào Cell trên ListView


Tạo DetailToDoActivity trong /view/detail/


<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.jundat95.todoapp.view.detail.DetailToDoActivity">

<TextView
android:id="@+id/tvTitle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:gravity="center_horizontal"
android:text="Title"
android:textSize="18sp"
android:textStyle="bold" />

<TextView
android:id="@+id/tvContent"
android:layout_width="match_parent"
android:layout_height="50dp"
android:layout_alignParentEnd="true"
android:layout_alignParentStart="true"
android:layout_below="@+id/tvTitle"
android:text="TextView"
android:textSize="15sp"
android:textStyle="italic" />

<TextView
android:id="@+id/tvDate"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentStart="true"
android:layout_below="@+id/tvContent"
android:layout_marginBottom="5dp"
android:text="20.02.1995"
android:textSize="12sp"
android:textStyle="italic" />

</RelativeLayout>

Trong detail chúng ta đơn giản là ánh xạ các TextView và nhận dữ liệu từ MainActivity gửi sang, sau khi nhận được dữ liệu chúng ta gán vào TextView là xong.




package com.jundat95.todoapp.view.detail;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.TextView;

import com.jundat95.todoapp.R;

public class DetailToDoActivity extends AppCompatActivity {

    private TextView tvTitle, tvContent, tvDate;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_detail_to_do);

        init();
    }

    private void init() {
        tvTitle = (TextView) findViewById(R.id.tvTitle);
        tvContent = (TextView) findViewById(R.id.tvContent);
        tvDate = (TextView) findViewById(R.id.tvDate);

        // lấy dữ liệu từ bên MainActivity truyền sang
        Intent intent = getIntent();
        // dữ liệu trong intent lấy ra và gán vào textview
        tvTitle.setText(intent.getStringExtra("title"));
        tvContent.setText(intent.getStringExtra("content"));
        tvDate.setText(intent.getStringExtra("date"));
    }
}


Giao diện của Detail là /layout/activity_detail_to_do.xml



Bây giờ ta quay lại hàm MainActivity để viết code khi bấm vào cell trên listview thì sẽ bật ra màn hình khác và hiển thì dữ liệu.Chúng ta sẽ cập nhật hàm onCreate: 





 @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        init();
        //addToDo();
        final List toDos = getToDo();

        toDoAdapter = new ToDoAdapter(this, R.layout.item_to_do_list_view, toDos);
        listView.setAdapter(toDoAdapter);

        listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView adapterView, View view, int i, long l) {
                Intent intent = new Intent(MainActivity.this, DetailToDoActivity.class);
                intent.putExtra("title", toDos.get(i).getTitle());
                intent.putExtra("content", toDos.get(i).getContent());
                intent.putExtra("date", toDos.get(i).getDate());
                startActivity(intent);
            }
        });

    }



Like and Share page nhé :D 

No comments