[转帖]android学习之ListView如何使用_Android, Python及开发编程讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  Android, Python及开发编程讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 3122 | 回复: 0   主题: [转帖]android学习之ListView如何使用        下一篇 
jixiang.lu
注册用户
等级:中尉
经验:474
发帖:34
精华:0
注册:2014-3-17
状态:离线
发送短消息息给jixiang.lu 加好友    发送短消息息给jixiang.lu 发消息
发表于: IP:您无权察看 2014-3-19 16:37:25 | [全部帖] [楼主帖] 楼主

ListView是Android一系列组件之一,它以垂直列表的方式列出所需的列表项。实现方式有两种:
 * 第一种:使用ListView组件
 * 第二种:当前的Activity继承ListActivity

     ListView是需要绑定数据源的----->ArrayAdapter、SimpleAdapter、SimpleCursorAdapter

需要注意的是SimpleCursorAdapter要以数据库作为数据源的时候才使用。

来自SDK的描述:

A view that shows items in a vertically scrolling list. The items come from the ListAdapter associated with this view.


接下来就三种不同的数据源我写了一个例子,和大家一起来好好学习一下ListView。

首先,新建一个Android项目--->取名ListViewDemo

MainActivity.java的代码如下:

  1. public class MainActivity extends Activity implements OnClickListener{  
  2.  private Button btnArray,btnSimple,btnSimpleCursor;  
  3.  /** Called when the activity is first created. */  
  4.  @Override  
  5.  public void onCreate(Bundle savedInstanceState) {  
  6.  super.onCreate(savedInstanceState);  
  7.  setContentView(R.layout.main);  
  8.    
  9.  getWidgetInstance();  
  10.    
  11.  btnArray.setOnClickListener(this);  
  12.  btnSimple.setOnClickListener(this);  
  13.  btnSimpleCursor.setOnClickListener(this);  
  14.  }  
  15.    
  16.  public void getWidgetInstance() {  
  17.  btnArray = (Button)findViewById(R.id.btnArray);  
  18.  btnSimple = (Button)findViewById(R.id.btnSimple);  
  19.  btnSimpleCursor = (Button)findViewById(R.id.btnSimpleCursor);  
  20.  }  
  21.  
  22.  @Override  
  23.  public void onClick(View v) {  
  24.  int id = v.getId();  
  25.  switch(id) {  
  26.  case R.id.btnArray:  
  27.  Intent intent_array = new Intent(MainActivity.this,ArrayAdapterActivity.class);  
  28.  MainActivity.this.startActivity(intent_array);  
  29.  break;  
  30.  case R.id.btnSimple:  
  31.  Intent intent_simple = new Intent(MainActivity.this,SimpleAdapterActivity.class);  
  32.  MainActivity.this.startActivity(intent_simple);  
  33.  break;  
  34.  case R.id.btnSimpleCursor:  
  35.  Intent intent_cursor = new Intent(MainActivity.this,SimpleCursorAdapterActivity.class);  
  36.  MainActivity.this.startActivity(intent_cursor);  
  37.  break;  
  38.  }  
  39.  }  

main.xml的布局:

  1. <?xml version="1.0" encoding="utf-8"?> 
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
  3.     android:orientation="vertical" 
  4.     android:layout_width="fill_parent" 
  5.     android:layout_height="fill_parent" 
  6.     > 
  7. <TextView    
  8.     android:layout_width="fill_parent"   
  9.     android:layout_height="wrap_content"   
  10.     android:text="ListView使用示例" 
  11.     android:gravity="center" 
  12.     android:textColor="#EEE" 
  13.     android:textStyle="bold" 
  14.     android:textSize="25sp" 
  15.     /> 
  16. <Button 
  17.     android:id="@+id/btnArray" 
  18.     android:layout_width="wrap_content"   
  19.     android:layout_height="wrap_content"   
  20.     android:text="show ArrayAdapter" 
  21.     /> 
  22. <Button 
  23.     android:id="@+id/btnSimple" 
  24.     android:layout_width="wrap_content"   
  25.     android:layout_height="wrap_content"   
  26.     android:text="show SimpleAdapter" 
  27.     /> 
  28. <Button 
  29.     android:id="@+id/btnSimpleCursor" 
  30.     android:layout_width="wrap_content"   
  31.     android:layout_height="wrap_content"   
  32.     android:text="show SimpleCursorAdapter" 
  33.     /> 
  34. </LinearLayout> 

显示效果:主界面有三个Button,每一个Button对应相应的数据源,显示出ListActivity。

接着,编写三个不同数据源的Activity

第一种:ArrayAdapter

ArrayAdapter是三种数据源中最简单的Adapter,只能显示一行文字

ArrayAdapter.java的代码如下:

  1. public class ArrayAdapterActivity extends ListActivity {  
  2.  @Override  
  3.  public void onCreate(Bundle savedInstanceState) {  
  4.  super.onCreate(savedInstanceState);  
  5.  //列表项的数据  
  6.  String[] strs = {"1","2","3","4","5"};  
  7.  ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_expandable_list_item_1,strs);  
  8.  setListAdapter(adapter);  
  9.  }  

第二种:SimpleAdapterActivity

SimpleAdapterActivity需要自定义每一项显示的布局方式:

所以simple.xml的代码如下:

  1. <?xml version="1.0" encoding="utf-8"?> 
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
  3.     android:orientation="vertical" 
  4.     android:layout_width="fill_parent" 
  5.     android:layout_height="fill_parent" 
  6.     > 
  7. <ImageView 
  8.     android:id="@+id/img" 
  9.     android:layout_width="wrap_content" 
  10.     android:layout_height="wrap_content" 
  11.     android:layout_margin="5dp" 
  12.     /> 
  13. <TextView 
  14.     android:id="@+id/title" 
  15.     android:layout_width="wrap_content"   
  16.     android:layout_height="wrap_content"   
  17.     android:textColor="#ffffff" 
  18.     android:textSize="20sp" 
  19.     /> 
  20. </LinearLayout> 

SimpleAdapterActivity.java代码如下:

  1. public class SimpleAdapterActivity extends ListActivity {  
  2.  @Override  
  3.  public void onCreate(Bundle savedInstanceState) {  
  4.  super.onCreate(savedInstanceState);  
  5.    
  6.  SimpleAdapter adapter = new SimpleAdapter(this, getData(), R.layout.simple, new String[] { "title", "img" }, new int[] { R.id.title, R.id.img });  
  7.  setListAdapter(adapter);  
  8.  }  
  9.    
  10.  private List<Map<String, Object>> getData() {  
  11.  //map.put(参数名字,参数值)  
  12.  List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();  
  13.  Map<String, Object> map = new HashMap<String, Object>();  
  14.  map.put("title", "摩托罗拉");  
  15.  map.put("img", R.drawable.icon);  
  16.  list.add(map);  
  17.    
  18.  map = new HashMap<String, Object>();  
  19.  map.put("title", "诺基亚");  
  20.  map.put("img", R.drawable.icon);  
  21.  list.add(map);  
  22.    
  23.  map = new HashMap<String, Object>();  
  24.  map.put("title", "三星");  
  25.  map.put("img", R.drawable.icon);  
  26.  list.add(map);  
  27.  return list;  
  28.  }   

第三种:SimpleCursorAdapterActivity

SimpleCursorAdapterActivity是依赖于数据库的一种数据源,这里为了方便我就不重新建一个数据库,然后插入数据了,我就用读取联系人姓名的方式为例和大家做一个简单的介绍。

SimpleCursorAdapterActivity.xml代码如下:

  1. public class SimpleCursorAdapterActivity extends ListActivity {  
  2.  @Override  
  3.  public void onCreate(Bundle savedInstanceState) {  
  4.  super.onCreate(savedInstanceState);  
  5.  //获得一个指向系统通讯录数据库的Cursor对象获得数据来源  
  6.  Cursor cur = getContentResolver().query(People.CONTENT_URI, null, null, null, null);  
  7.  startManagingCursor(cur);  
  8.  //实例化列表适配器  
  9.    
  10.  ListAdapter adapter = new SimpleCursorAdapter(this, android.R.layout.simple_list_item_1, cur, new String[] {People.NAME}, new int[] {android.R.id.text1});  
  11.  setListAdapter(adapter);  
  12.  }  

这里特别需要注意的一点是:不要忘了在AndroidManifest.xml文件中加入权限

<uses-permission android:name="android.permission.READ_CONTACTS"></uses-permission>




赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论