博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android:Adapter笔记
阅读量:6351 次
发布时间:2019-06-22

本文共 3659 字,大约阅读时间需要 12 分钟。

Adapter:适配器-->将数据以什么形式发送到界面.

ΞBaseAdapter自定义及ListView的应用;

1.自定义BaseAdapter,重写其getView()方法;

ΞWife.java

public class Wife {    private String aName;    private String aSpeak;    private int aIcon;    public Wife() {    }    public Wife(String aName, String aSpeak, int aIcon) {        this.aName = aName;        this.aSpeak = aSpeak;        this.aIcon = aIcon;    }    public String getaName() {        return aName;    }    public String getaSpeak() {        return aSpeak;    }    public int getaIcon() {        return aIcon;    }    public void setaName(String aName) {        this.aName = aName;    }    public void setaSpeak(String aSpeak) {        this.aSpeak = aSpeak;    }    public void setaIcon(int aIcon) {        this.aIcon = aIcon;    }}

 

Ξ重写BaseAdapter;

public class WifeAdapter extends BaseAdapter {    private LinkedList
mData; //ArrayList和LinkedList都是实现了List接口的容器类,进行查操作时用ArrayList,进行增删操作的时候最好用LinkedList。 private Context mContext; public WifeAdapter(LinkedList
mData, Context mContext) { this.mData = mData; this.mContext = mContext; } @Override public int getCount() { return mData.size(); } @Override public Object getItem(int position) { return null; } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) {   //重写geiView() ViewHolder holder = null; if(convertView == null){              //由于会多次调用getView(),所以在此处判断,只需调用一次生成函数体(包括inflate()和findViewById())即可 convertView = LayoutInflater.from(mContext).inflate(R.layout.list_item_wife,parent,false); holder = new ViewHolder(); holder.img_icon = (ImageView) convertView.findViewById(R.id.img_icon); holder.txt_aName = (TextView) convertView.findViewById(R.id.txt_aName); holder.txt_aSpeak = (TextView) convertView.findViewById(R.id.txt_aSpeak); convertView.setTag(holder); //将Holder存储到convertView中,setTag(Onbect)表示给View添加一个格外的数据,以后可以用getTag()将这个数据取出来。 }else{ holder = (ViewHolder) convertView.getTag(); } holder.img_icon.setBackgroundResource(mData.get(position).getaIcon()); holder.txt_aName.setText(mData.get(position).getaName()); holder.txt_aSpeak.setText(mData.get(position).getaSpeak()); return convertView;}static class ViewHolder{ ImageView img_icon; TextView txt_aName; TextView txt_aSpeak; } }

 

ΞViewHolder是你自己造出来的一个类,配合convertView减少调用findViewById()的次数;

 

2.编写ListView;

mainActivity.java

public class MainActivity extends AppCompatActivity {    private List
mData = null; private Context mContext; private WifeAdapter mAdapter = null; private ListView list_wife; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mContext = MainActivity.this; list_wife = (ListView) findViewById(R.id.list_wife); mData = new LinkedList
();     //添加元素 mData.add(new Wife("椎名真白", "呐,你想变成什么颜色?", R.drawable.hina)); mData.add(new Wife("泽村英梨梨", "都说了我没生气!", R.drawable.ilili)); mData.add(new Wife("加藤惠", "老公~", R.drawable.megumi)); mAdapter = new WifeAdapter((LinkedList
) mData, mContext); list_wife.setAdapter(mAdapter); }}

list_item_wife.xml

activity_main.xml

 

3.效果图;

 

 

 

 

 

 

 

 

 

 

 

转载于:https://www.cnblogs.com/Ravenzzz/p/9812443.html

你可能感兴趣的文章
【译】更优秀的GraphQL官方中文文档-客户端如何使用
查看>>
git pull遇到的问题
查看>>
eclipse下maven spring项目环境配置
查看>>
无缝轮播
查看>>
CTS失败项分析(2)android.telephony.cts.VisualVoicemailServiceTest#testFilter_data
查看>>
三分钟,轻松了解Dapp
查看>>
GMQ交易平台满足不同客户群体的多种投资需求
查看>>
大数据开发如何入门你必须知道这些
查看>>
关于js(es5)如何优雅地创建对象
查看>>
阿里云前端周刊 - 第 28 期
查看>>
iOS 主队列同步造成死锁的原因
查看>>
es6 下比较对象是否有修改的简要方法
查看>>
windows安装mysql
查看>>
你还在看《深入理解Java虚拟机》的运行时数据模型吗?
查看>>
RIS,创建 React 应用的新选择
查看>>
线性结构上的动态规划--算法竞赛入门经典笔记
查看>>
面试官:你使用webpack时手写过loader,分离过模块吗?
查看>>
Ubuntu 16.04系统下 对OpenJDK编译好的Hotspot 进行调试
查看>>
00-利用思维导图梳理JavaSE基础知识-持续更新中!
查看>>
java中三种注释及其实际应用的意义
查看>>