A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 冯超 高级黑马   /  2014-3-19 19:29  /  872 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

这个学期开始认真的学期的安卓,最早接触安卓是在去年暑假的那个时候,半夜熬夜做了个很小的东西,计算器和打电话,发短信的软件。奈何这个暑假也快到来,时间也不多了。
说下ListView吧!
  1.         private ListView listView;
  2.         private TextView textView;
  3.         String[] items = {"111","111","111","111","111","111","111","111","111","222","111","111","111","111","55555"};
  4.         @Override
  5.         protected void onCreate(Bundle savedInstanceState) {
  6.                 super.onCreate(savedInstanceState);
  7.                 setContentView(R.layout.activity_main);
  8.                
  9.                 //获取listview
  10.                 listView = (ListView) findViewById(R.id.listview1);
  11.                 listView.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, items));
  12. //                设置监听事件
  13.                 listView.setOnItemClickListener(new OnItemClickListener() {
  14.                         @Override
  15.                         public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
  16.                                         long arg3) {
  17.                                 // TODO Auto-generated method stub
  18.                                 Toast.makeText(MainActivity.this, "选择了" + "--" + arg2, 1).show();
  19.                         }
  20.                 });
  21.         }
复制代码

基本的,这段代码就足够了。
第一步:实例化 listView
第二部:定义适配器
第三部:listView.setAdapter.

这个是简单的。
在来说个复杂的。
有一个布局歌曲xml文件:
这个布局有三个控件(多少个控件没有关系)
有一个主界面,里面有个ListView控件。
目的则是:需要这个listView中的每一行都是那个xml布局。

如何做到呢?
关键还是适配器,介绍个SimpleAdapter adapter = new SimpleAdapter(this, listDate,R.layout.activity_diarys_list, from, to);   简单适配器。
listDate是一个List<Map<String, ?>>集合
from是一个字符串数组 String[] from = {};  里面的元素对应listDate集合中的key
to也是一个字符串数组String[] to = {};  里面的元素对了布局xml控件中的id(R.id.xx)
其他的方式都是一样也都一样。


说道适配器,当然可以自定义:
  1. package com.example.myadapterdesign;

  2. import java.util.ArrayList;
  3. import java.util.List;

  4. import android.app.Activity;
  5. import android.os.Bundle;
  6. import android.view.LayoutInflater;
  7. import android.view.Menu;
  8. import android.view.View;
  9. import android.view.ViewGroup;
  10. import android.widget.Adapter;
  11. import android.widget.ArrayAdapter;
  12. import android.widget.BaseAdapter;
  13. import android.widget.ListAdapter;
  14. import android.widget.ListView;
  15. import android.widget.TextView;
  16. import android.widget.Toast;

  17. public class MainActivity extends Activity {
  18.         private ListView listView;
  19.         private Myadapter myAdapter;
  20.         @Override
  21.         protected void onCreate(Bundle savedInstanceState) {
  22.                 super.onCreate(savedInstanceState);
  23.                 setContentView(R.layout.activity_main);
  24.                 listView = (ListView) findViewById(R.id.listView1);
  25.                 myAdapter = new Myadapter(getSources());
  26.                 //Adapter adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, getSources());
  27.                 listView.setAdapter(myAdapter);
  28.                
  29.         }

  30.         @Override
  31.         public boolean onCreateOptionsMenu(Menu menu) {
  32.                 // Inflate the menu; this adds items to the action bar if it is present.
  33.                 getMenuInflater().inflate(R.menu.main, menu);
  34.                 return true;
  35.         }
  36.         public List<String> getSources() {
  37.                 List<String> list = new ArrayList<String>();
  38.                 for(int i = 0; i < 50; i++) {
  39.                         list.add("zhangsssssss" + i);
  40.                 }
  41.                 return list;
  42.         }

  43.         class Myadapter extends BaseAdapter {
  44.                 List<String> list;
  45.                 public Myadapter(List<String> list){
  46.                         this.list = list;
  47.                 }
  48.                 @Override
  49.                 public int getCount() {
  50.                         // TODO Auto-generated method stub
  51.                         return list.size();
  52.                 }
  53.                
  54.                 @Override
  55.                 public Object getItem(int position) {
  56.                         // TODO Auto-generated method stub
  57.                         return list.get(position);
  58.                 }
  59.                
  60.                 @Override
  61.                 public long getItemId(int position) {
  62.                         // TODO Auto-generated method stub
  63.                         return position;
  64.                 }
  65.                
  66.                 @Override
  67.                 public View getView(int position, View convertView, ViewGroup parent) {
  68.                         // TODO Auto-generated method stub
  69.                         View view;
  70.                         if(convertView == null) {
  71.                                 view = LayoutInflater.from(MainActivity.this).
  72.                                                 inflate(R.layout.item, null);
  73.                         } else {
  74.                                 view = convertView;
  75.                         }
  76.                         TextView textView = (TextView) view.findViewById(R.id.textView1);
  77.                         textView.setText(list.get(position));
  78.                         return view;
  79.                 }
  80.                
  81.         }
  82. }
复制代码

各位怕麻烦就用系统给的常用适配器(麻烦就是数据得按照官方给的数据形式,什么json,xml,数组感觉都是一样的只是形式),不麻烦就自己定义适配器,但是不管什么方式,都要用自己喜欢的方式,毕竟都是工具,能得心应手的使用才是王道!

评分

参与人数 1技术分 +1 收起 理由
菜小徐 + 1

查看全部评分

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马