ListView万能适配器CommonAdapter
来源:互联网 发布:淘宝回复差评专业术语 编辑:程序博客网 时间:2024/05/16 11:57
CommonAdapter:
/* * @Copyright (c) tianchenglin * @Author TCL * @Date 2016.7.5 */package com.study.tcl.commonadapter;import android.content.Context;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import java.util.List;/** * Created by TCL on 2016/7/5. */public abstract class CommonAdapter<T> extends BaseAdapter { private Context mContext; private List<T> mData; private int mItemLayoutId;//每一行item布局文件 public CommonAdapter(Context context, List<T> data, int itemLayoutId) { this.mContext = context; this.mData = data; this.mItemLayoutId = itemLayoutId; } @Override public int getCount() { return mData.size(); } @Override public T getItem(int position) { return mData.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder viewHolder = ViewHolder.getInstance(mContext, convertView, parent, mItemLayoutId, position); //填充数据 convert(viewHolder, getItem(position)); return viewHolder.getConvertView(); } public abstract void convert(ViewHolder viewHolder, T item);}ViewHolder:
/* * @Copyright (c) tianchenglin * @Author TCL * @Date 2016.7.5 */package com.study.tcl.commonadapter;import android.content.Context;import android.graphics.Bitmap;import android.util.SparseArray;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.ImageView;import android.widget.TextView;/** * Created by TCL on 2016/7/5. */public class ViewHolder { private SparseArray<View> mViews;//稀疏数组,里面放的是一行里面所有的控件 private int mPosition; private View mConvertView;//每一行对应的布局 //采用单例模式 private ViewHolder(Context context, ViewGroup parent, int layoutId, int position) { this.mPosition = position; this.mViews = new SparseArray<View>(); /**此处用LayoutInflater,直接使用View.inflate报错**/ this.mConvertView = LayoutInflater.from(context).inflate(layoutId, parent, false); this.mConvertView.setTag(this); } /** * 获取ViewHolder对象 * * @return */ public static ViewHolder getInstance(Context context, View convertView, ViewGroup parent, int layoutId, int position) { if (convertView == null) { synchronized (ViewHolder.class) { return new ViewHolder(context, parent, layoutId, position); } } else { return (ViewHolder) convertView.getTag(); } } /** * 通过控件的id得到相应的控件(因为不知道控件的类型,要用到泛型) */ public <T extends View> T getView(int viewId) { View view = mViews.get(viewId); if (view == null) { view = mConvertView.findViewById(viewId); mViews.put(viewId, view);//放入稀疏数组 } return (T) view; } /** * 为TextView赋值 */ public ViewHolder setText(int viewId, String text) { TextView view = getView(viewId);//找到控件 view.setText(text); return this; } /** * 为ImageView设置图片 */ public ViewHolder setImageBitmap(int viewId, Bitmap bitmap) { ImageView view = getView(viewId); view.setImageBitmap(bitmap); return this; } /** * 返回行号 * * @return */ public int getPosition() { return mPosition; } /** * 返回行view * * @return */ public View getConvertView() { return mConvertView; }}MainActivity:
/* * @Copyright (c) tianchenglin * @Author TCL * @Date 2016.7.5 */package com.study.tcl.commonadapter;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.widget.ListView;import java.util.ArrayList;import java.util.Arrays;import java.util.List;public class MainActivity extends AppCompatActivity { private ListView lv_list; //准备数据 private List<String> mData = new ArrayList<String>(Arrays.asList("宋江", "卢俊义", "吴用", "公孙胜", "关胜", "林冲", "秦明", "呼延灼", "花荣", "柴进", "李应", "朱仝", "鲁智深", "武松", "董平", "张清", "杨志", "徐宁", "索超", "戴宗", "刘唐", "李逵", "史进", "穆弘", "雷横", "李俊", "阮小二", "张横", "阮小五", " 张顺", "阮小七", "杨雄", "石秀", "解珍", " 解宝", "燕青", "朱武", "黄信", "孙立", "宣赞", "郝思文", "韩滔", "彭玘", "单廷珪", "魏定国", "萧让", "裴宣", "欧鹏", "邓飞", " 燕顺", "杨林", "凌振", "蒋敬", "吕方", "郭 盛", "安道全", "皇甫端", "王英", "扈三娘", "鲍旭", "樊瑞", "孔明", "孔亮", "项充", "李衮", "金大坚", "马麟", "童威", "童猛", "孟康", "侯健", "陈达", "杨春", "郑天寿", "陶宗旺", "宋清", "乐和", "龚旺", "丁得孙", "穆春", "曹正", "宋万", "杜迁", "薛永", "施恩")); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); } private void initView() { this.lv_list = (ListView) findViewById(R.id.lvList); //设置适配器 lv_list.setAdapter(new CommonAdapter<String>(getApplicationContext(), mData, R.layout.item) { @Override public void convert(ViewHolder viewHolder, String item) { viewHolder.setText(R.id.tvName, item); } }); }}
activity_main:
<?xml version="1.0" encoding="utf-8"?><!-- ~ @Copyright (c) tianchenglin ~ @Author TCL ~ @Date 2016.7.5 --><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="com.study.tcl.commonadapter.MainActivity"> <ListView android:id="@+id/lvList" android:layout_width="match_parent" android:layout_height="match_parent"></ListView></RelativeLayout>item:
<?xml version="1.0" encoding="utf-8"?><!-- ~ @Copyright (c) tianchenglin ~ @Author TCL ~ @Date 2016.7.5 --><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical"> <TextView android:id="@+id/tvName" android:layout_width="match_parent" android:layout_height="wrap_content" android:textColor="#000000" android:textSize="18sp"/></LinearLayout>
0 0
- ListView万能适配器CommonAdapter
- CommonAdapter-万能的ListView.GridView的适配器
- 万能适配器 CommonAdapter
- 万能适配器CommonAdapter和ViewHolder
- 万能适配器(2) 抽取CommonAdapter
- listView的简化适配器commonAdapter
- Android万能适配器CommonAdapter的源码分析
- Java泛型应用之打造Android中ListView和GridView万能适配器【CommonAdapter】--超简洁写法
- 万能ListView适配器
- Android--ListView--万能适配器
- ListView万能适配器
- ListView万能适配器
- listView 打造万能适配器
- ListView 万能适配器
- ListView之万能适配器
- 初级ListView万能适配器
- ListView、GridView万能适配器
- ListView GridView 万能适配器
- [leetcode-354]Russian Doll Envelopes(java)
- Count Primes
- JdbcTemplate RowMapper没有把返回的数据填充到POJO里面
- 事件触发器-----dispatchEvent
- iOS绘制图形的基本方法
- ListView万能适配器CommonAdapter
- CSS设置文字字体
- ios实现基于socket tcp/ip的通讯
- 【转】COMMIT后恢复
- C语言自加自减的问题
- 读JavaScript语言精粹后部分知识的总结
- Spring MVC漏洞学习总结
- Path requests must specify a user by using UserEnvironment
- sed 使用