小兜提醒下:这只是小笔记
AndroidStudio–ListView and ArrayAdapter
arrayAdapterActivity.java
这是相当于主页面的的activity,在这里主要放置组件ListView来显示信息,以及建立对象,布局文件名为activity_array_adapter.xml
整个文件最重要就是四条代码:
//声明组件ListView
ListView mListView = (ListView) findViewById(R.id.listView);
//建立Person ArrayList——>ArrayList
ArrayList peopleList = new ArrayList();
//声明adpater,这里的adapter相当于布局信息如何放置
personListAdapter adapter = new personListAdapter(this,R.layout.person_adapter,peopleList);
//listview按照adpter的形式显示
mListView.setAdapter(adapter);
剩下滴就是建立Person对象和将对象添加到peopleList中,这里的将两个差不多的布局写在一起,注意区分person和ticket
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import java.util.ArrayList;
public class arrayAdapterActivity extends AppCompatActivity {
private static final String TAG = "arrayAdapterActivity";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_array_adapter);
// listPeople();
listTicket();
}
public void listPeople(){
ListView mListView = (ListView) findViewById(R.id.listView);
//Create Person Objects
Person john = new Person("John","12.0.1998","male");
Person mary = new Person("Mary","12.01.1985","female");
Person mary2 = new Person("Mary","12.01.1985","female");
Person mary3 = new Person("Mary","12.01.1985","female");
Person mary4 = new Person("Mary","12.01.1985","female");
Person mary5 = new Person("Mary","12.01.1985","female");
Person mary6 = new Person("Mary","12.01.1985","female");
//Add the person object to on Arraylist
ArrayList<Person> peopleList = new ArrayList<Person>();
peopleList.add(john);
peopleList.add(mary);
peopleList.add(mary2);
peopleList.add(mary3);
peopleList.add(mary4);
peopleList.add(mary5);
peopleList.add(mary6);
personListAdapter adapter = new personListAdapter(this,R.layout.person_adapter,peopleList);
mListView.setAdapter(adapter);
}
public void listTicket(){
ListView mListView = (ListView) findViewById(R.id.listView);
ViewTicket ticket = new ViewTicket(1,"tiket","2020","close");
ViewTicket ticket1 = new ViewTicket(2,"tiket","2020","close");
ViewTicket ticket2 = new ViewTicket(3,"tiket","2020","close");
ViewTicket ticket3 = new ViewTicket(4,"tiket","2020","close");
ViewTicket ticket4 = new ViewTicket(5,"tiket","2020","close");
ViewTicket ticket5 = new ViewTicket(6,"tiket","2020","close");
ViewTicket ticket6 = new ViewTicket(7,"tiket","2020","close");
ArrayList<ViewTicket> ticketList = new ArrayList<ViewTicket>();
ticketList.add(ticket);
ticketList.add(ticket1);
ticketList.add(ticket);
ticketList.add(ticket);
ticketList.add(ticket);
ticketList.add(ticket);
ticketList.add(ticket);
TicketListAdapter adapter = new TicketListAdapter(this,R.layout.ticket_adapter,ticketList);
mListView.setAdapter(adapter);
}
}
activity_array_adapter.xml
<?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=".arrayAdapterActivity">
<ListView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/listView"/>
</RelativeLayout>
TicketListAdapter.java
TicketListAdapter和personListAdapter文件都是为了页面能正常显示而布置滴,但是下面的这个做法遇到一些特殊情况回出错,具体请听下回分解
convertView = inflater.inflate(mResource,parent,false);
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 androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import java.util.ArrayList;
import java.util.List;
class TicketListAdapter extends ArrayAdapter<ViewTicket> {
private static final String TAG = "TicketListAdapter";
private Context mContext;
int mResource;
public TicketListAdapter(@NonNull Context context, int resource, @NonNull ArrayList<ViewTicket> objects) {
super(context, resource, objects);
this.mContext = context;
mResource = resource;
}
@NonNull
@Override
public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
//get the person information
int number = getItem(position).getNumber();
String project = getItem(position).getTicketProject();
String date = getItem(position).getTicketDate();
String status = getItem(position).getTicketStatus();
//Create the viewTicket object with the information
ViewTicket viewTicket = new ViewTicket(project,date,status);
LayoutInflater inflater = LayoutInflater.from(mContext);
convertView = inflater.inflate(mResource,parent,false);
TextView tvNumber = (TextView) convertView.findViewById(R.id.tv4);
TextView tvProject = (TextView) convertView.findViewById(R.id.tv1);
TextView tvDate = (TextView) convertView.findViewById(R.id.tv2);
TextView tvStatus = (TextView) convertView.findViewById(R.id.tv3);
tvNumber.setText(Integer.toString(number));
tvProject.setText(project);
tvDate.setText(date);
tvStatus.setText(status);
return convertView;
}
}
personListAdapter.java
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 androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import org.w3c.dom.Text;
import java.util.ArrayList;
import java.util.List;
public class personListAdapter extends ArrayAdapter<Person> {
private static final String TAG = "personListAdapter";
private Context mContext;
int mResource;
public personListAdapter(@NonNull Context context, int resource, @NonNull ArrayList<Person> objects) {
super(context, resource, objects);
this.mContext = context;
mResource = resource;
}
@NonNull
@Override
public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
//get the person information
String name = getItem(position).getName();
String birthday = getItem(position).getBirthday();
String sex = getItem(position).getSex();
//Create the person object with the information
Person person = new Person(name,birthday,sex);
LayoutInflater inflater = LayoutInflater.from(mContext);
convertView = inflater.inflate(mResource,parent,false);
TextView tvName = (TextView) convertView.findViewById(R.id.tv1);
TextView tvBirthday = (TextView) convertView.findViewById(R.id.tv2);
TextView tvSex = (TextView) convertView.findViewById(R.id.tv3);
tvName.setText(name);
tvBirthday.setText(birthday);
tvSex.setText(sex);
return convertView;
}
}
person_adapter.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="100">
<!-- <LinearLayout-->
<!-- android:layout_width="106dp"-->
<!-- android:layout_height="wrap_content"-->
<!-- android:orientation="horizontal">-->
<!-- <TextView-->
<!-- android:id="@+id/tv4"-->
<!-- android:layout_width="match_parent"-->
<!-- android:layout_height="60dp"-->
<!-- android:gravity="center" />-->
<!-- </LinearLayout>-->
<TextView
android:id="@+id/tv1"
android:layout_width="750dp"
android:layout_height="60dp"
android:layout_weight="66.6"
android:gravity="center"
android:textAlignment="center" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_weight="33.3">
<TextView
android:id="@+id/tv2"
android:layout_width="match_parent"
android:layout_height="30dp"
android:gravity="center"></TextView>
<TextView
android:gravity="center"
android:layout_width="match_parent"
android:layout_height="30dp"
android:id="@+id/tv3"/>
</LinearLayout>
</LinearLayout>
ticket_adapter.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="100">
<LinearLayout
android:layout_width="106dp"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:id="@+id/tv4"
android:layout_width="match_parent"
android:layout_height="60dp"
android:gravity="center" />
</LinearLayout>
<TextView
android:id="@+id/tv1"
android:layout_width="750dp"
android:layout_height="60dp"
android:layout_weight="66.6"
android:gravity="center"
android:textAlignment="center" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_weight="33.3">
<TextView
android:id="@+id/tv2"
android:layout_width="match_parent"
android:layout_height="30dp"
android:gravity="center"></TextView>
<TextView
android:gravity="center"
android:layout_width="match_parent"
android:layout_height="30dp"
android:id="@+id/tv3"/>
</LinearLayout>
</LinearLayout>
ViewTicket.java
ViewTicket的代码是为整个App服务的,所以有好几个构造函数
public class ViewTicket {
public int number;
public String ticketID;
public String ticketProject;
public String ticketPICName;
public String ticketHPNumber;
public String ticketEmail;
public String ticketAddress;
public String ticketService;
public String ticketDescription;
public String ticketDate;
public String ticketStatus;
public ViewTicket(int number, String ticketProject, String ticketDate, String ticketStatus) {
this.number = number;
this.ticketProject = ticketProject;
this.ticketDate = ticketDate;
this.ticketStatus = ticketStatus;
}
public ViewTicket(String ticketProject, String ticketDate, String ticketStatus) {
this.ticketProject = ticketProject;
this.ticketDate = ticketDate;
this.ticketStatus = ticketStatus;
}
public ViewTicket(String ticketID, String ticketProject, String ticketPICName, String ticketHPNumber, String ticketEmail, String ticketAddress, String ticketService, String ticketDescription, String ticketDate, String ticketStatus) {
this.ticketID = ticketID;
this.ticketProject = ticketProject;
this.ticketPICName = ticketPICName;
this.ticketHPNumber = ticketHPNumber;
this.ticketEmail = ticketEmail;
this.ticketAddress = ticketAddress;
this.ticketService = ticketService;
this.ticketDescription = ticketDescription;
this.ticketDate = ticketDate;
this.ticketStatus = ticketStatus;
}
public int getNumber() {
return number;
}
public void setNumber(int number) {
this.number = number;
}
public String getTicketProject() {
return ticketProject;
}
public void setTicketProject(String ticketProject) {
this.ticketProject = ticketProject;
}
public String getTicketDate() {
return ticketDate;
}
public void setTicketDate(String ticketDate) {
this.ticketDate = ticketDate;
}
public String getTicketStatus() {
return ticketStatus;
}
public void setTicketStatus(String ticketStatus) {
this.ticketStatus = ticketStatus;
}
}
Peoson.java
public class Person {
private String name;
private String birthday;
private String sex;
public Person(String name, String birthday, String sex) {
this.name = name;
this.birthday = birthday;
this.sex = sex;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getBirthday() {
return birthday;
}
public void setBirthday(String birthday) {
this.birthday = birthday;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
}