Android——(高階控制元件ListView)
阿新 • • 發佈:2018-11-28
1. BaseAdapter:是所有介面卡類的父類,可以對列表項進行最大限度的定製
1.1 自定義介面卡中的方法
getCount
getView
getItem
getItemId
1.2 LayoutInflater(佈局解析器)
--LayoutInflater有三種獲得方式,資料中有詳細介紹
用來把layout佈局檔案解析成一個View物件,不可以new,需要使用系統服務獲得
inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
package com.example.android_08; import android.content.Context; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.ImageView; import android.widget.ListView; import android.widget.TextView; import android.widget.Toast; import java.util.ArrayList; import java.util.List; public class MainActivity extends AppCompatActivity { private ListView lv_main_show; private List<Book> data = new BookDao().list(); private MyBaseAdapter adapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); lv_main_show = findViewById(R.id.lv_main_show); adapter = new MyBaseAdapter((LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE)); lv_main_show.setAdapter(adapter); } class MyBaseAdapter extends BaseAdapter{ // 佈局解析器 private LayoutInflater inflater; public MyBaseAdapter(LayoutInflater inflater) { this.inflater = inflater; } /** * 像資源數量 * @return */ @Override public int getCount() { return data.size(); } /** * 解析像資源的資料 * @param position * @return */ @Override public Object getItem(int position) { return data.get(position); } /** * 解析資料的下標 * @param position * @return */ @Override public long getItemId(int position) { return position; } /** * 解析試圖 * @param position * @param convertView * @param parent * @return */ @Override public View getView(int position, View convertView, ViewGroup parent) { class ViewHolder{ ImageView iv_listviewitem_image; TextView tv_listviewitme_title; TextView tv_listviewitme_author; TextView tv_listviewitme_price; TextView tv_listviewitme_publish; TextView tv_listviewitme_remark; } View v=convertView; if(v==null){ v = inflater.inflate(R.layout.listview_item, null); Log.i("position",""+position); ViewHolder holder=new ViewHolder(); holder.iv_listviewitem_image = v.findViewById(R.id.iv_listviewitem_image); holder.tv_listviewitme_title = v.findViewById(R.id.tv_listviewitme_title); holder.tv_listviewitme_author = v.findViewById(R.id.tv_listviewitme_author); holder.tv_listviewitme_price = v.findViewById(R.id.tv_listviewitme_price); holder.tv_listviewitme_publish = v.findViewById(R.id.tv_listviewitme_publish); holder.tv_listviewitme_remark = v.findViewById(R.id.tv_listviewitme_remark); v.setTag(holder); } ViewHolder tag = (ViewHolder) v.getTag(); Book book = data.get(position); tag.iv_listviewitem_image.setImageResource(book.getImage()); tag.tv_listviewitme_title.setText(book.getTitle()); tag.tv_listviewitme_author.setText(book.getAuthor()); tag.tv_listviewitme_price.setText(book.getPrice().toString()); tag.tv_listviewitme_publish.setText(book.getPublish()); tag.tv_listviewitme_remark.setText(book.getRemark()); return v; } } }