您的位置:首页 > 移动开发 > Android开发

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

                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: