ListView控件使用

来源:互联网 发布:澳门网络真人博客 编辑:程序博客网 时间:2024/06/01 22:57

在android开发中ListView是比较常用的组件,它以列表的形式展示具体内容,并且能够根据数据的长度自适应显示。

列表的显示需要三个元素:

1.ListVeiw 用来展示列表的View。

2.适配器 用来把数据映射到ListView上的中介。

3.数据    具体的将被映射的字符串,图片,或者基本组件。

根据列表的适配器类型,列表分为三种,ArrayAdapter,SimpleAdapter和SimpleCursorAdapter

1、ArrayAdapter

比较简单,就是单行字符串的,这里转载个例子:

/** * @author allin * */public class MyListView extends Activity {     private ListView listView;    //private List<String> data = new ArrayList<String>();    @Override    public void onCreate(Bundle savedInstanceState){        super.onCreate(savedInstanceState);                 listView = new ListView(this);        listView.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_expandable_list_item_1,getData()));        setContentView(listView);    }                   private List<String> getData(){                 List<String> data = new ArrayList<String>();        data.add("测试数据1");        data.add("测试数据2");        data.add("测试数据3");        data.add("测试数据4");                 return data;    }}


2、SimpleAdapter

扩展性最好的适配器,建议自己写一个demo感受下,以下为验证的一个demo(不需要响应按钮):

public class MainActivity extends AppCompatActivity  implements View.OnClickListener{    private Button addDataBtn;    private Button delDataBtn;    private ListView mainListView;    private List<Map<String, Object>> mainData;    private SimpleAdapter adapter;    private Random random;    private int i;    //创建ViewList并初始化数据和控件    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        random = new Random();        i = 0;        addDataBtn = (Button) findViewById(R.id.addData);        delDataBtn = (Button) findViewById(R.id.delData);        addDataBtn.setOnClickListener(this);        delDataBtn.setOnClickListener(this);        mainData =  new ArrayList<Map<String, Object>>(); //创建ViewList的数据        adapter = new SimpleAdapter(this, mainData,  //将数据注册到adapter                R.layout.vlistitem_main,    //自定义的ViewList项目                new String[]{"title", "info", "img"},   //注册数据标签                new int[] {R.id.title1, R.id.info1, R.id.img});     //数据标签对应的ViewList中的控件ID,需要与上面一行一一对应;        mainListView = (ListView) findViewById(R.id.listView);        mainListView.setAdapter(adapter);       //设置适配器
<span style="white-space:pre"></span><pre style="background-color: rgb(255, 255, 255); font-family: 宋体; font-size: 9pt;"><span style="color:#660e7a;"><strong><span style="white-space:pre"></span>mainListView</strong></span>.setOnItemClickListener(<span style="color:#000080;"><strong>new </strong></span>AdapterView.OnItemClickListener() {    <span style="white-space:pre"></span><span style="color:#808000;">@Override</span><span style="color:#808000;">    <span style="white-space:pre"></span></span><span style="color:#000080;"><strong>public void </strong></span>onItemClick(AdapterView<?> arg0, View arg1, <span style="color:#000080;"><strong>int </strong></span>arg2,                           <span style="color:#000080;"><strong>long </strong></span>arg3) {        <span style="white-space:pre"></span>Toast.<span style="font-style:italic;">makeText</span>(getApplicationContext(), <span style="color:#008000;"><strong>"你点击了第" </strong></span>+arg2 + <span style="color:#008000;"><strong>"行!"</strong></span>, Toast.<span style="color:#660e7a;"><strong><em>LENGTH_LONG</em></strong></span>).show();<span style="color:#808080;"><em></em></span><span style="color:#808080;"><em>    <span style="white-space:pre"></span></em></span>}<span style="white-space:pre"></span>});
} //向ViewList数据中增加条目 private void addData(List<Map<String, Object>> data){ int tmpint = random.nextInt(100); i++; Map<String, Object> map = new HashMap<String, Object>(); map.put("title", "G" + tmpint); map.put("info", "google " + tmpint); map.put("img", android.R.drawable.btn_default); data.add(map); } //随机删除ViewList数据中的条目 private void delData(List<Map<String, Object>> data){ if(i!=0) { int randomInt = random.nextInt(i); Toast.makeText(this, "i=" + i + ";randomInt=" + randomInt + ";", Toast.LENGTH_LONG).show(); data.remove(randomInt); i--; } } //增减数据条目按钮回调函数 @Override public void onClick(View v) { switch (v.getId()) { case R.id.addData: addData(mainData); adapter.notifyDataSetChanged(); //数据改变后,通知ViewList更新数据; break; case R.id.delData: delData(mainData); adapter.notifyDataSetChanged(); //数据改变后,通知ViewList更新数据; break; default: break; } }}

3、SimpleCursorAdapter

(未完待续)

0 0
原创粉丝点击