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
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>
<?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
Post a Comment