Android:ListView(一)

ListView四种适配器:

1、ArrayAdapte

2、SimpleAdapter

3、SimpleCursorAdapter

4、BaseAdapter

下面是基于后面3中适配器实现的,还有一个就是SimpleAdapter的加强版,也就是plus,哈哈。主要是实现带图片功能,第一种适配器比较简单,准备用它实现显示分组。下面是实现功能截图以及代码。

上图实现的核心代码:

public class ListView1 extends Activity {
    private ListView listView;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.listview1);

         listView = (ListView) this.findViewById(R.id.listView1);
         showSimpleAdapter();
    }
    private void showSimpleAdapter() {
        List<HashMap<String, Object>> data = new ArrayList<HashMap<String,Object>>();
            for (int i = 0; i < 4; i++) {
                HashMap<String, Object> item = new HashMap<String, Object>();
                item.put("name","atm"+i );
                item.put("age",10+i );
                data.add(item);
            }

    /**
     * Context context  上下文信息
       List<? extends Map<String, ?>> data   将该数据显示在界面上
       int resource     数据需要显示的地方
       String[] from    从什么地方
       int[] to         显示到什么地方
         */
        SimpleAdapter adapter = new SimpleAdapter(this, data, R.layout.item,new String[]{"name", "age"}, new int[]{R.id.text1,R.id.text2});

        listView.setAdapter(adapter);

    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

}

上图实现的核心代码:

public class ListView2 extends Activity {
    private ListView listView;
    private ServiceTest serviceTest;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.listview1);

         listView = (ListView) this.findViewById(R.id.listView1);
         serviceTest=new ServiceTest(getApplicationContext());
         showSimpleCursorAdapter();
    }

    private void showSimpleCursorAdapter() {
        Cursor cursor =serviceTest.Find_cursor();
        SimpleCursorAdapter adapter = new SimpleCursorAdapter(this, R.layout.item, cursor,
                new String[]{"name", "age"}, new int[]{R.id.text1, R.id.text2});
        listView.setAdapter(adapter);
    }
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }
}

上图实现的核心代码:

public class ListView3 extends Activity {
        private ListView listView;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.listview2);

             listView = (ListView) this.findViewById(R.id.listView2);
             showSimpleAdapter();
        }
        private void showSimpleAdapter() {
        SimpleAdapter adapter = new SimpleAdapter(
                this, getData(), R.layout.item_plus,new String[]{"name", "age", "img"}, new int[]{R.id.name,R.id.age,R.id.img});

            listView.setAdapter(adapter);
        }

        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
            // Inflate the menu; this adds items to the action bar if it is present.
            getMenuInflater().inflate(R.menu.main, menu);
            return true;
        }
        private List<Map<String, Object>> getData() {
            List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();

            Map<String, Object> map = new HashMap<String, Object>();
            map.put("name", "atm1");
            map.put("age", 1);
            map.put("img", R.drawable.img2);
            list.add(map);

            map = new HashMap<String, Object>();
            map.put("name", "atm2");
            map.put("age", 2);
            map.put("img", R.drawable.love);
            list.add(map);

            map = new HashMap<String, Object>();
            map.put("name", "atm3");
            map.put("age", 3);
            map.put("img", R.drawable.img1);
            list.add(map);

            return list;
        }

    }

上图实现的核心代码:

public class ListView4 extends Activity {
        private ListView listView;
        private ServiceTest serviceTest;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.listview1);

             listView = (ListView) this.findViewById(R.id.listView1);
             serviceTest=new ServiceTest(this);
             listView.setOnItemClickListener(new ItemClickListener());
             showMyAdapter();
        }

        //点击后,获取给View上的数据
        private final class ItemClickListener implements OnItemClickListener{
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                ListView listview = (ListView)parent;
                UserInfo userinfo = (UserInfo) listview.getItemAtPosition(position);
                Toast.makeText(getApplicationContext(), userinfo.getUser_id()+"  "+userinfo.getUser_name(), 1).show();
            }
        }
        private void showMyAdapter() {
            // TODO Auto-generated method stub
            List<UserInfo> list=serviceTest.Findall();
            MyAdapter  myAdapter=new MyAdapter(this, list, R.layout.item);
            listView.setAdapter(myAdapter);
        }
        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
            // Inflate the menu; this adds items to the action bar if it is present.
            getMenuInflater().inflate(R.menu.main, menu);
            return true;
        }
    }

代码下载请点击:代码下载

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-11-07 04:26:15

Android:ListView(一)的相关文章

Android——ListView布局+适配器(三)

Android--ListView布局+适配器(三) package com.example.administrator.newstop; import android.os.Bundle; import android.support.v4.view.ViewPager; import android.support.v7.app.AppCompatActivity; import android.util.Log; import android.view.View; import andro

Android——ListView多布局+适配器(二)

Android--ListView多布局+适配器(二) <span style="font-size:18px;">package com.example.administrator.newstop.entity; /** * Created by Administrator on 2016/8/4. */ public class News { private String title; private String pubDate; private int img; p

Android ListView复杂列表优化实践

原文:Android ListView复杂列表优化实践 很多社交App都不免会涉及到复杂的列表元素实现,一个列表上面可能大量的图片,不定长的评论列表,给手机端的程序员带来了不少的挑战.本文就是在实现复杂的列表滑动的情况下,利用已知的优化方法指导下的一次优化实践,旨在提升ListView的滑动流畅度,为用户带来良好的体验. 1:设计稿: 这是列表中可能出现的ItemView,有两种,但是又有许多相同的地方,比如一样有点赞的图片,评论等...其中,评论和点赞的数量是可变的. 2:使用一般布局带来的问

[转]Android ListView最佳处理方式,ListView拖动防重复数据显示,单击响应子控件

Android ListView最佳处理方式,ListView拖动防重复数据显示,单击响应子控件. 1.为了防止拖动ListView时,在列表末尾重复数据显示.需要加入 HashMap<Integer,View> lmap = new HashMap<Integer,View>();其中Integer为列表位置,View为子项视图,加入数据前首先if (lmap.get(position)==null) ,满足条件时,加入lmap.put(position, convertView

android listview级联三菜单选择地区,本地数据库sqlite级联地区,item选中不变色

前言:因为找了N多网上的资源都没有好的解决方案,别人都是只给思路没给具体源码,真TMD纠结,干嘛求别人,自己动手才是真,最痛恨那些所谓大牛的作风,给了点点代码就让别人去想,你让我们这种小白情何于堪!!!!!!此例是基于listview来实现本地sqlite实现的! 二话不说,程序猿求的是有图有真相有源码!大家下载后有什么问题可以找到本人:QQ508181017 核心代码如下 1.数据库操作类 package com.icq.demo.db; import java.util.ArrayList;

关于android:listview getChildAt 为空的解释

今天遇到了一个很奇怪的问题,我所设定的一个listview 有10个item,当我的 list.getCount 的数量对其进行for 循环的时候,当到第6个item的时候,得到的view对象却是null,这让我很费解,经过一番查询,明白了这个问题是怎么回事,与大家分享下: 如图片红框部分的listview部分.这其实涉及到android的listview控件的内存处理问题:当我们加载listview时,如果这个listview的数据量比较多,它是显示不完全的,但这时是否是所有的数据都已经加载?

android Listview分批加载+自动加载(附源码下载)

直接上代码,代码有注释: public class TestForListviewActivity extends Activity implements OnScrollListener { private ListView mListview = null; private View mFooterView; private PaginationAdapter mAdapter; private Handler handler=new Handler(); private boolean i

Android ListView常见属性问题

Question 1: listview在拖动的时候背景图片消失变成黑色背景.等到拖动完毕我们自己的背景图片才显示出来. 解决办法: xml中: android:scrollingCache="false"  或者 android:cacheColorHint="#00000000" 代码中: setScrollingCacheEnabled(false)  或者 setCacheColorHint(0)  或者setCacheColorHint(Color.TRA

Android——ListView与适配器

Android--ListView与适配器 1.抽屉布局  Drawer <?xml version="1.0" encoding="utf-8"?> <android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.

Android ListView 中的onItemClick方法中Intent 无法跳转的解决方案

I found this somewhere after googling There will be case that your custom list item doesn’t respond when you click…so what’s the reason and what’s the solution? Here several problems and solutions: 1. Scenario: list item layout contains CheckBox Prob