Friday, July 1, 2016

Làm việc với ListView nâng cao, cách thiết lập custom adapter

public class SinhVien {
    public String hoTen;
    public int namSinh;

    public SinhVien(String hoTen, int namSinh) {
        this.hoTen = hoTen;
        this.namSinh = namSinh;
    }

<?xml version="1.0" encoding="utf-8"?><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:paddingBottom="@dimen/activity_vertical_margin"    android:paddingLeft="@dimen/activity_horizontal_margin"    android:paddingRight="@dimen/activity_horizontal_margin"    android:paddingTop="@dimen/activity_vertical_margin"    tools:context="com.example.macbookpro.khoaphamcustomadapter2.dongSinhVien">

    <TextView        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:textAppearance="?android:attr/textAppearanceLarge"        android:text="Large Text"        android:id="@+id/textViewHoTen"        android:layout_alignParentTop="true"        android:layout_alignParentLeft="true"        android:layout_alignParentStart="true" />

    <TextView        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:textAppearance="?android:attr/textAppearanceMedium"        android:text="Medium Text"        android:layout_below="@+id/textViewHoTen"        android:layout_alignParentLeft="true"        android:layout_alignParentStart="true"        android:id="@+id/textViewPhone" />
</RelativeLayout>

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;

public class dongSinhVien extends AppCompatActivity {

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

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.TextView;

import java.util.List;

/** * Created by macbookpro on 6/29/16. */public class ListAdapter extends ArrayAdapter<SinhVien> {

    public ListAdapter(Context context, int resource, List<SinhVien> items) {
        super(context, resource, items);
    }

    @Override    public View getView(int position, View convertView, ViewGroup parent) {

        View view = convertView;
        if (view == null) {
            LayoutInflater inflater = LayoutInflater.from(getContext());
            view =  inflater.inflate(R.layout.activity_dong_sinh_vien, null);
        }
        SinhVien p = getItem(position);
        if (p != null) {
            // Anh xa + Gan gia tri            TextView txt1 = (TextView) view.findViewById(R.id.textViewHoTen);
            txt1.setText(p.hoTen);

            TextView txt2 = (TextView) view.findViewById(R.id.textViewPhone);
            txt2.setText(String.valueOf(p.namSinh));


        }
        return view;
    }

}

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.Toast;

import java.util.ArrayList;

public class MainActivity extends AppCompatActivity {
    ListView lvSinhVien;
    @Override    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        lvSinhVien = (ListView) findViewById(R.id.listViewSinhVien);

        final ArrayList<SinhVien> dsSinhVien = new ArrayList<SinhVien>();
        dsSinhVien.add(new SinhVien("Son",1987));
        dsSinhVien.add(new SinhVien("Tuan",1947));
        dsSinhVien.add(new SinhVien("Le",1950));
        dsSinhVien.add(new SinhVien("Tran",1990));
        dsSinhVien.add(new SinhVien("Vinh",1962));

        // tao custom adapter: => tao customLayout(Activity) => tao ListAdapter
        // set custom adapter        ListAdapter adapter = new ListAdapter (MainActivity.this,R.layout.activity_dong_sinh_vien,dsSinhVien);
        lvSinhVien.setAdapter(adapter);

        // su ly chon tren listView        lvSinhVien.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                Toast.makeText(MainActivity.this,dsSinhVien.get(position).hoTen,Toast.LENGTH_LONG).show();
            }
        });

    }
}

No comments:

Post a Comment