FirstApp———Note (AndroidStudio ListView&ArrayAdapter)

小兜提醒下:这只是小笔记

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;
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值