使用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展示数据的例子,猿友们可以据此改成自己想要的结果