BaseAdapter的使用
来源:互联网 发布:火车票选座位软件 编辑:程序博客网 时间:2024/05/21 11:32
总觉得在这几个adapter里面,BaseAdapter是最重要的,因为他可以适应所有的模式
1.写一个类继承BaseAdapter
重写里面的方法,其中 getCount() 和getView(int arg0, View arg1, ViewGroup arg2)必须重写:
public int getCount() {return 0;//必须重写,不能返回0.否则没有数据}public Object getItem(int arg0) {return null;}public long getItemId(int arg0) {return 0;}public View getView(int arg0, View arg1, ViewGroup arg2) {return null;}
2.声明视图容器
LayoutInflater inflater=null;
视图容器是在构造方法里通过inflater=(LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);创建的。
在getview里通过convertView=inflater.inflate(R.layout.girdview, null);获取list_item布局文件的视图 。
这里有两个视图,一个是包含listview控件的主视图,另一个是list_item显示的方式。
下面是例子:
package com.example.list; import java.util.ArrayList;import java.util.HashMap; import android.app.Activity;import android.os.Bundle;import android.view.LayoutInflater;import android.view.View;import android.view.View.OnClickListener;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.Button;import android.widget.ImageView;import android.widget.ListView;import android.widget.TextView; public class ListViewActivity extends Activity {//声明ListViewListView listView;//声明 MyAdapter MyAdapter adapter;protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState); //显示主视图setContentView(R.layout.listviewlayout);//初始化listViewlistview=(ListView)findViewById(R.id.cities_listView);//获取数据ArrayList<HashMap<String,Object>> list=getData();//初始化adapter(调用的构造方法)adapter=new MyAdapter(list);//将适配器设置到listviewlistview.setAdapter(adapter);}//获取数据的方法private ArrayList<HashMap<String, Object>> getData() {ArrayList<HashMap<String, Object>> list=new ArrayList<HashMap<String,Object>>();for(int i=0;i<10;i++){HashMap<String, Object> map=new HashMap<String, Object>();map.put("personImage", R.drawable.ic_launcher);map.put("personName", "刘关星");map.put("personCode", "123");list.add(map);}return list;} //建立一个新类继承BaseAdapterclass MyAdapter extends BaseAdapter{private ArrayList<HashMap<String,Object>> list;//视图容器private LayoutInflater inflater;//构造方法public MyAdapter(ArrayList<HashMap<String,Object>> list){this.list=list;//得到inflater第一种方法this.inflater=getLayoutInflater();//得到inflater第二种方法inflater=(LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);}//必须重写,默认返回的是0@Overridepublic int getCount() {return list.size();} @Overridepublic Object getItem(int position) {return list.get(position);} @Overridepublic long getItemId(int position) {return position;} @Overridepublic View getView(int position, View convertView, ViewGroup parent) {HashMap<String, Object> person_map=list.get(position);ViewHolder holder=null;if(convertView==null){//这里将list_item的视图通过inflater得到并给了converviewconvertView=inflater.inflate(R.layout.list_item,null);holder=new ViewHolder();//找到idholder.image=(ImageView) convertView.findViewById(R.id.person_image);holder.name_text=(TextView) convertView.findViewById(R.id.person_name);holder.code_text=(TextView) convertView.findViewById(R.id.person_code);holder.persondelete_btn=(Button) convertView.findViewById(R.id.pesondelete_btn);convertView.setTag(holder);}else{//直接得到下一个控件集holder=(ViewHolder) convertView.getTag();}//赋值holder.image.setImageResource((Integer)person_map.get("personImage"));holder.name_text.setText((String)person_map.get("personName"));holder.code_text.setText((String)person_map.get("personCode"));holder.persondelete_btn.setOnClickListener(new OnClickListener() {public void onClick(View arg0) {System.out.println("++");}});return convertView;}}//自定义的ViewHolderstatic class ViewHolder{ImageView image;TextView name_text;TextView code_text;Button persondelete_btn;}}
0 0
- BaseAdapter的使用
- BaseAdapter的使用
- BaseAdapter的使用
- BaseAdapter的使用
- ListView -- BaseAdapter的使用
- BaseAdapter的使用
- 关于BaseAdapter的使用
- BaseAdapter的使用
- BaseAdapter的使用
- BaseAdapter的使用
- listview的使用----BaseAdapter
- BaseAdapter的使用
- Android BaseAdapter的使用
- BaseAdapter的使用
- 关于BaseAdapter的使用
- BaseAdapter 的使用
- 优化使用的BaseAdapter
- ListView+BaseAdapter的使用
- VS2008中 string 类型转化成char* 时出现 “初始化”: 无法从“const char *”转换为“char *”
- hdu-oj 1286 找新朋友
- uva 1397 - The Teacher's Side of Math(高斯消元)
- UVa 11754 - Code Feat (中国剩余定理 枚举)
- 毕业两年有余
- BaseAdapter的使用
- (leetcode)Sort List
- 排序算法
- LayoutInflater作用及使用
- hdu 1466 计算直线的交点数 (简单的动态规划)
- 【ArcGis】ArcObjects SDK(AE)10.1在vs2012安装的方法
- centOS下,源码安装erlang
- JDK自带VM分析工具jps,jstat,jmap,jconsole
- hdu-2617