Android自定义适配器 (BaseAdapter)及优化
2017-06-11 13:54
309 查看
注:本次内容是模拟一个游戏下载的UI运行结果如下:首先新建一个XML 内容如下
<ListView android:id="@+id/lv_main_view" android:layout_width="match_parent" android:layout_height="wrap_content"> </ListView>
在新建一个XML内容如下
<--图片-->
<ImageViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:id="@+id/image_item_iv"/>
<--文本--><TextViewandroid:layout_width="match_parent"android:layout_height="wrap_content"android:layout_weight="1"android:id="@+id/text_item_tv"/>
<--按钮--><Buttonandroid:id="@+id/button_item_but"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="下载"/>
//此java类用于优化
public class entity {public ImageView iv;public Button bu;public TextView tv;}
新建一个Java类
//图片id
int image[]={R.drawable.bird,R.drawable.cat,R.drawable.dog,R.drawable.fox,R.drawable.cow};String data[]={"鸟人","Tomcat","单身狗","狐狸精","大黑牛"};private ListView lv;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);lv = (ListView) findViewById(R.id.lv_main_view);
lv.setAdapter(new AdapterDiy());
//点击事件lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {@Overridepublic void onItemClick(AdapterView<?> parent, View view, int position, long id) {Toast.makeText(MainActivity.this, "进入"+data[position%data.length], Toast.LENGTH_SHORT).show();}});}
//自定义适配器 重写BaseAdapter的方法 最主要的方法 getCount 和 getViewclass AdapterDiy extends BaseAdapter{
//假设有10000条数据 并且要求每循环5次数据相同@Overridepublic int getCount() {return 10000;}@Overridepublic Object getItem(int position) {return data[position%data.length];}@Overridepublic long getItemId(int position) {return position;}@Overridepublic View getView(final int position, View view, ViewGroup parent) {
//注:代码中 position%data.length 是去余数
//布局文件转成Viewif(view==null){view=LayoutInflater.from(getApplicationContext()).inflate(R.layout.activity_item,null); //实例化entity类 调用entity的方法
entity en=new entity();
//赋值
en.iv= (ImageView) view.findViewById(R.id.image_item_iv);en.tv=(TextView)view.findViewById(R.id.text_item_tv);en.bu=(Button) view.findViewById(R.id.button_item_but);view.setTag(en);}entity en= (entity) view.getTag();
en.iv.setImageResource(image[position%data.length]);en.tv.setText(data[position%data.length]);
//点击事件en.bu.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {Toast.makeText(MainActivity.this,"正在下载"+data[position%data.length], Toast.LENGTH_SHORT).show();}});return view;}}
相关文章推荐
- Android自定义适配器,BaseAdapter的使用方法
- BaseAdapter 自定义适配器的使用以及优化
- android BaseAdapter 自定义适配器 BaseAdapter基类抽取 一
- Android之自定义实现BaseAdapter(通用适配器四)
- Android中GridView通过自定义适配器(未优化)实现图文视图排列
- Android 自定义适配器逐步优化
- Android之自定义实现BaseAdapter(通用适配器一)
- Android之自定义实现BaseAdapter(通用适配器一)
- Android学习ListView自定义布局,适配器BaseAdapter
- ListView的优化和自定义适配器继承于BaseAdapter
- Android之自定义实现BaseAdapter(通用适配器三)
- Android自定义实现BaseAdapter的优化布局
- android 自定义适配器Adapter基类BaseAdapter
- Android之自定义实现BaseAdapter(优化布局)
- Android之自定义实现BaseAdapter(通用适配器二)
- Android之自定义实现BaseAdapter(优化布局)
- android BaseAdapter 自定义适配器 BaseAdapter基类抽取 二
- Android自定义适配器BaseAdapter
- Android中GridView通过自定义适配器(未优化)实现图文视图排列
- Android游戏开发23:自定义ListView通用适配器(BaseAdapter)之全方位详解