Android——(高級控件ListView)

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;

        }
    }

}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章