使用ListView完美顯示一條記錄
MainActivity 佈局文件activity_main.xml,先設計了一個標題,提示記錄的各個屬性名稱,接下來是一個ListView,展現具體的記錄內容java
<?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.xmlandroid
<?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.javaide
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 代碼this
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運行結果以下spa
總結:代碼很簡單,這是一個標準的使用ListView展現數據的例子,猿友們能夠據此改爲本身想要的結果.net
demo地址設計