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;
}
}
}