多语言展示
当前在线:1317今日阅读:91今日分享:37

android ListView自定义开发实例

ListView作为列表控件,通过绑定自定义的适配器数据,展示一个具有图片,文本展示框和按钮的自定义的列表
工具/原料
1

电脑(windows)

2

eclipse+android编程环境

方法/步骤
1

新建一个android项目,名称为ListViewAuto,其余参数可以自己配置,点击完成,生成项目文件

2

完成列表要展示的选项实例类,ItemView,其中属性有//要展示的图片信息 private  ImageView image; //标题信息  private TextView title; //按钮信息 private Button button;然后生成对应get,set方法

3

设置配置文件,main.xml声明ID以及长宽属性 

4

设置ListView中各个选项的样式配置文件listview.xml,声明一个ImageView展示图片,TextView展示文本信息,Button展示按钮信息

5

实现自定义适配器,必须手动映射数据,这时就需要重写getView()方法,系统在绘制列表的每一行的时候将调用此方法。 ListView在开始绘制的时候,系统自动调用getCount()函数,根据函数返回值得到ListView的长度,然后根据这个长度,调用getView()逐一画出每一行。主要展示getView()方法实现 //展示记录信息 @Override public View getView(int position, View convertView, ViewGroup parent) { // TODO Auto-generated method stub ItemView item=null; if(convertView==null){ item= new ItemView();  //获得组件,实例化组件              convertView=layoutInflater.inflate(R.layout.listview, null);             item.setImage((ImageView)convertView.findViewById(R.id.imageView));            item.setTitle((TextView)convertView.findViewById(R.id.title));            item.setButton((Button)convertView.findViewById(R.id.button));            //这个步骤很重要!!!            //可以使用setTag把查找的view缓存起来方便多次重用            convertView.setTag(item); }else{ item=(ItemView)convertView.getTag(); } //绑定数据 ,将传入data进行逐个赋值         item.getImage().setBackgroundResource((Integer)data.get(position).get('imageView'));        item.getTitle().setText((String)data.get(position).get('title'));        item.getButton().setText((String)data.get(position).get('button'));        return convertView;   }下面是自定义适配器ListViewAdapter的代码图例

6

主体函数编写,先是找到ListView控件,将数据放入适配器中,进行数据展示public class ListViewAutoShow extends Activity {    /** Called when the activity is first created. */  private ListView listInfo=null;      @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);        listInfo=(ListView)findViewById(R.id.listInfo);          List> result=getData();          listInfo.setAdapter(new ListViewAdapter(this, result));     } public List> getData() { // TODO Auto-generated method stub  List> list=new ArrayList>();          for (int i = 0; i < 10; i++) {              Map map=new HashMap();              map.put('imageView', R.drawable.ico_info);              map.put('title', '标题信息'+i);              map.put('button', '查看按钮'+i);              list.add(map);          }          return list;  }}

7

运行程序,观察运行结果

推荐信息