listView简单使用和出现的一些问题

先将基本的流程展示出来;
在这里只介绍SimpleAdapte适配器;

//这是基本模本
//因为java里面的单继承,如果需要继承其他的Activity,不能继承ListActivity时,按照下面的流程、
        ListView listView1 = (ListView) findViewById(R.id.ListView1);
        SimpleAdapter adapter = new SimpleAdapter(this,list,R.layout.item,
                                new String[]{"img","title","imformation"},
                                new int[]{R.id.image,R.id.title, R.id.imformation}
                );
        listView1.setAdapter(adapter);

介绍一下适配器里面的元素。
this;第一个为当前对象的引用。
list;list为存放数据的list队列的引用。
R.layout.item;记住这个为每行为什么的布局引用,而不是listView的布局引用。
new String[]{“img”,”title”,”imformation”};这是key键,对应map的key;
new int[]{R.id.image,R.id.title, R.id.imformation};根据上面的键一一对应的布局id;

还说一下,listView的点击事件。这个比较简单就是方法套上去就可以了,至于其他的逻辑代码就在里面根据position不同来写就OK了、
public void onItemClick (AdapterView

        //点击事件
        listView1.setOnItemClickListener(new OnItemClickListener() {
                public void onItemClick(AdapterView<?> parent, View view,int position, long id) {
                    TextView title = (TextView) view.findViewById(R.id.title);
                    Toast.makeText(getApplicationContext(), title.getText(), 0).show();
                }
        });

下面分析我遇到的两个问题;

1;首先的时候展示listView的时候是空白的,找了好久的bug都没找到;
————出现问题的地方;
适配器里面配置第三个变量的时候,我不是配置的item布局,而是listView的布局,所以导致没有显示,这是属于知识点不了解好。

2;往list添加数据的时候,始终是最后一个数据将前面的覆盖了导致Listview展示的元素都是一样的。
————出现的问题是;
对于list不熟悉;
List list保存的T,如果T是引用类型则是引用,如果是值类型则是值本身;
因此需要这样;

//注意如果这里不每次只向新建立的对象,那么每次添加进入list的是相同对象元素。
        //这里的map是Map<String, Object>,object,如果是String则不同每次创建对象。
        //List<T> list保存的T,如果T是引用类型则是引用,如果是值类型则是值本身
        Map<String, Object> map = new HashMap<String, Object>();
        map.put("title", "G1");
        map.put("imformation", "google 1");
        map.put("img", R.drawable.sheep);
        list.add(map); 

        map = new HashMap<String, Object>();
        map.put("title", "G3");
        map.put("imformation", "google 3");
        map.put("img", R.drawable.touxiang);
        list.add(map);//传入的map是引用类型,即为该对象的地址, 

        map = new HashMap<String, Object>();
        map.put("title", "G2");
        map.put("imformation", "google 2");
        map.put("img", R.drawable.yueyang);
        list.add(map);
注意,如果map是<String,String>则不需要次次创建新对象。;
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值