使用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地址
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/231458.html
標籤:其他
上一篇:Dialog對話框
