使用ListView完美顯示一條記錄

使用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地址設計

相關文章
相關標籤/搜索