使用ListView完美显示一条记录

使用ListView完美显示一条记录

MainActivity 布局文件activity_main.xml,先设计了一个标题,提示记录的各个属性名称,接下来是一个ListView,展示具体的记录内容

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@color/gray"
        android:orientation="horizontal">

        <TextView
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="2"
            android:gravity="center"
            android:text="时间"
            android:textColor="@android:color/black"
            android:textSize="20sp"
            android:textStyle="bold" />

        <TextView
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:gravity="center"
            android:text="来访人姓名"
            android:textColor="@android:color/black"
            android:textSize="20sp"
            android:textStyle="bold" />

        <TextView
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:gravity="center"
            android:text="性别"
            android:textColor="@android:color/black"
            android:textSize="20sp"
            android:textStyle="bold" />

        <TextView
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:gravity="center"
            android:text="名族"
            android:textColor="@android:color/black"
            android:textSize="20sp"
            android:textStyle="bold" />

        <TextView
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="2"
            android:gravity="center"
            android:text="证件地址"
            android:textColor="@android:color/black"
            android:textSize="20sp"
            android:textStyle="bold" />

        <TextView
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="2"
            android:gravity="center"
            android:text="证件号码"
            android:textColor="@android:color/black"
            android:textSize="20sp"
            android:textStyle="bold" />

        <TextView
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:gravity="center"
            android:text="被访人姓名"
            android:textColor="@android:color/black"
            android:textSize="20sp"
            android:textStyle="bold" />
    </LinearLayout>

    <ListView
        android:id="@+id/lv_visitor_record"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />
</LinearLayout>

ListView的条目对应的布局文件 visitor_record_item.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal">

    <TextView
        android:id="@+id/tvVisitTime"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="2"
        android:gravity="center"
        android:paddingTop="5dp"
        android:paddingBottom="5dp"
        android:text="2020-12-12 12:12:12"
        android:textColor="@color/black"
        android:textSize="18sp" />

    <TextView
        android:id="@+id/tvVisitor"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:gravity="center"
        android:paddingTop="5dp"
        android:paddingBottom="5dp"
        android:text="小锤子"
        android:textColor="@color/black"
        android:textSize="18sp" />

    <TextView
        android:id="@+id/tvVisitorSex"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:gravity="center"
        android:paddingTop="5dp"
        android:paddingBottom="5dp"
        android:text=""
        android:textColor="@color/black"
        android:textSize="18sp" />

    <TextView
        android:id="@+id/tvVisitorNation"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:gravity="center"
        android:paddingTop="5dp"
        android:paddingBottom="5dp"
        android:text=""
        android:textColor="@color/black"
        android:textSize="18sp" />

    <TextView
        android:id="@+id/tvVisitorAddress"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="2"
        android:gravity="center"
        android:paddingTop="5dp"
        android:paddingBottom="5dp"
        android:text="xxx省xxx市xxx路xxx号"
        android:textColor="@color/black"
        android:textSize="18sp" />

    <TextView
        android:id="@+id/tvVisitorId"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="2"
        android:gravity="center"
        android:paddingTop="5dp"
        android:paddingBottom="5dp"
        android:text="332281199502033231"
        android:textColor="@color/black"
        android:textSize="18sp" />

    <TextView
        android:id="@+id/tvInterviewees"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:gravity="center"
        android:paddingTop="5dp"
        android:paddingBottom="5dp"
        android:text="大锤子"
        android:textColor="@color/black"
        android:textSize="18sp" />
</LinearLayout>

条目绑定的JavaBean数据 Visitor.java

public class Visitor {
    
    
    private String visitTime;
    private String visitor;
    private String visitorSex;
    private String visitorNation;
    private String visitorAddress;
    private String visitorId;
    private String interviewees;

    public Visitor(String visitTime, String visitor, String visitorSex, String visitorNation, String visitorAddress, String visitorId, String interviewees) {
    
    
        this.visitTime = visitTime;
        this.visitor = visitor;
        this.visitorSex = visitorSex;
        this.visitorNation = visitorNation;
        this.visitorAddress = visitorAddress;
        this.visitorId = visitorId;
        this.interviewees = interviewees;
    }

    public String getVisitTime() {
    
    
        return visitTime;
    }

    public void setVisitTime(String visitTime) {
    
    
        this.visitTime = visitTime;
    }

    public String getVisitor() {
    
    
        return visitor;
    }

    public void setVisitor(String visitor) {
    
    
        this.visitor = visitor;
    }

    public String getVisitorSex() {
    
    
        return visitorSex;
    }

    public void setVisitorSex(String visitorSex) {
    
    
        this.visitorSex = visitorSex;
    }

    public String getVisitorNation() {
    
    
        return visitorNation;
    }

    public void setVisitorNation(String visitorNation) {
    
    
        this.visitorNation = visitorNation;
    }

    public String getVisitorAddress() {
    
    
        return visitorAddress;
    }

    public void setVisitorAddress(String visitorAddress) {
    
    
        this.visitorAddress = visitorAddress;
    }

    public String getVisitorId() {
    
    
        return visitorId;
    }

    public void setVisitorId(String visitorId) {
    
    
        this.visitorId = visitorId;
    }

    public String getInterviewees() {
    
    
        return interviewees;
    }

    public void setInterviewees(String interviewees) {
    
    
        this.interviewees = interviewees;
    }
}

ListView 涉及到条目和数据绑定,所以自定义了Adapter,MyRecordAdapter.java,为了记录显示比较有层次感,每个条目对应的记录设置了背景色,奇数位置同一个背景色,偶数位置同一个背景色

public class MyRecordAdapter extends BaseAdapter {
    
    
    private List<Visitor> visitors;
    private Context mContext;

    public MyRecordAdapter(List<Visitor> visitors, Context mContext) {
    
    
        this.visitors = visitors;
        this.mContext = mContext;
    }

    @Override
    public int getCount() {
    
    
        return visitors.size();
    }

    @Override
    public Object getItem(int position) {
    
    
        return visitors.get(position);
    }

    @Override
    public long getItemId(int position) {
    
    
        return position;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
    
    
        Holder holder;
        if(convertView == null){
    
    
            holder = new Holder();
            convertView  = LayoutInflater.from(mContext).inflate(R.layout.visitor_record_item,null);
            holder.tvVisitTime = convertView.findViewById(R.id.tvVisitTime);
            holder.tvVisitor = convertView.findViewById(R.id.tvVisitor);
            holder.tvVisitorSex = convertView.findViewById(R.id.tvVisitorSex);
            holder.tvVisitorNation = convertView.findViewById(R.id.tvVisitorNation);
            holder.tvVisitorAddress = convertView.findViewById(R.id.tvVisitorAddress);
            holder.tvVisitorId = convertView.findViewById(R.id.tvVisitorId);
            holder.tvInterviewees = convertView.findViewById(R.id.tvInterviewees);
            convertView.setTag(holder);
        }else{
    
    
            holder = (Holder) convertView.getTag();
        }
        if(position % 2 == 0){
    
    
            convertView.setBackgroundColor(Color.parseColor("#FFFFFF"));
        }else{
    
    
            convertView.setBackgroundColor(Color.parseColor("#CDCFDE"));
        }
        holder.tvVisitTime.setText(visitors.get(position).getVisitTime());
        holder.tvVisitor.setText(visitors.get(position).getVisitor());
        holder.tvVisitorSex.setText(visitors.get(position).getVisitorSex());
        holder.tvVisitorNation.setText(visitors.get(position).getVisitorNation());
        holder.tvVisitorAddress.setText(visitors.get(position).getVisitorAddress());
        holder.tvVisitorId.setText(visitors.get(position).getVisitorId());
        holder.tvInterviewees.setText(visitors.get(position).getInterviewees());
        return convertView;
    }

    class Holder{
    
    
        private TextView tvVisitTime;
        private TextView tvVisitor;
        private TextView tvVisitorSex;
        private TextView tvVisitorNation;
        private TextView tvVisitorAddress;
        private TextView tvVisitorId;
        private TextView tvInterviewees;
    }
}

MainActivity.java 代码

public class MainActivity extends AppCompatActivity {
    
    
    private ListView listView;
    private MyRecordAdapter myRecordAdapter;
    private List<Visitor> visitors = new ArrayList<>();

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

    private void initView() {
    
    
        listView = findViewById(R.id.lv_visitor_record);
        myRecordAdapter = new MyRecordAdapter(visitors,this);
        listView.setAdapter(myRecordAdapter);
    }

    private void initData() {
    
    
        Visitor visitor;
        for (int i = 1; i <= 100; i++) {
    
    
            visitor = new Visitor("2020-12-05 11:11:11", "锤子" + i, "男",
                    "汉", "XXX省XXX市XXX520号", "350289199508093650", "大锤子" + i);
            visitors.add(visitor);
        }
        myRecordAdapter.notifyDataSetChanged();
    }
  
}

APP运行结果如下

在这里插入图片描述

总结:代码很简单,这是一个标准的使用ListView展示数据的例子,猿友们可以据此改成自己想要的结果

demo地址

猜你喜欢

转载自blog.csdn.net/donghualigong123/article/details/110820809