码迷,mamicode.com
首页 > 其他好文 > 详细

ListView详解(一)

时间:2015-04-12 20:45:04      阅读:164      评论:0      收藏:0      [点我收藏+]

标签:

  1、Listview简述

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

简单来说就是,创建Listview,然后给数值就行了。

而这些数值来源有三种方式:ArrayAdapter、SimpleAdapter、SimpleCursorAdapter

 

第一种是最简单的一种Adapter,是字符串数值,只能在ListView显示出文本信息。

第二种是一种自定义的数据来源,要自定义布局方式,可以放置图片,按钮,文本之类的。

第三种数据来源于数据库。

 

2、使用ListView步骤

  • 将数据填充到布局之ArrayAdapter的使用

布局文件加入ListView控件:

<ListView

  android:id="@+id/lv"

  android:layout_width="fill_parent"

  android:layout_height="fill_parent"

  />

 

主程序:

MyListView.java

package com.ycz.mylistview;

import android.app.Activity;

import android.os.Bundle;

import android.widget.ArrayAdapter;

import android.widget.ListView;

public class MyListView extends Activity{

  private static final String[] str=new String[]{"first","second","third","fourth","fifth"};

  @Override

  public void onCreate(Bundle savedInstanceState){

    super.onCreate(savedInstanceState);

    setContentView(R.layout.main);

    lv=(ListView)findViewById(R.id.lv);

    //绑定ArrayAdapter适配器

    lv.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,str));

      }

     }

 

  第一个参数表示上下文,第二个参数表示一个包含TextView,用来填充listView的每一行的布局资源ID,第三个参数为ListView的内容。

  通过指定第二个参数来实现不同的显示效果,资源android.R.layout.simple_list_item_1来实现仅显示内容,无勾选。资源android.R.layout_simpel_list_item_checked实现带选择框的ListView,需要用setChoiceMode()设定选择为多选还是单选。资源android.R.layout.simple_list_item_multiple_choice实现带checkbox的ListView,需要用setChoiceMode()设定选择为多选还是单选。资源android.R.layout.simple_list_item_

  single_choice实现带RadioButton的ListView,需要用setChoiceMode()设定为多选还是单选。

  示例一 

  

lv.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_checked,str));

  lv.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);

 

  //实现带选择框的ListView,并设置为多选

  示例二

  

lv.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_multiple_choice,str));

  lv.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);

 

  //实现带CheckBox的ListView,并设置为多选

  示例三

 

 lv.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_

  single_choice,str));

  lv.setChoiceMode(ListView.CHOICE_MODE_SINGLE);

 

  

  •   处理用户操作之onItemClick()方法的使用

  

  通过调用setOnItemClickListener()接口方法,设置“点击”listview某一项的监听事件。

  通过调用setOnItemLongClickListener()接口方法,设置“长按”listview某一项的监听事件。

  

    1.   mylistview.setOnItemClickListener(new OnItemClickListener() {  
    2.     
    3.       @Override  
    4.       public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {  
    5.           // TODO Auto-generated method stub  
    6.             
    7.       }  
    8.   });  
    mylistview.setOnItemClickListener(new OnItemClickListener() {

	@Override
	public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
		// TODO Auto-generated method stub
		
	  }
    });

    关于onItemClick方法,下面详细说说。(以下是官方的说明,参数命名不同而已,类型都是一样的。arg0=parent,arg1=view,arg2=position,arg3=id)

 

    public abstract void onItemClick(AdapterView<?> parent,View view, int position, long id)

  Since: API Level 1

  Callback method to be invoked when an item in this AdapterView has been clicked.

  Implementers can call getItemAtPosition(position) if they need to access the data associated with the selected item.

  //当点击listview某一项时,这个回调方法就会被调用。

  Parameters
parent The AdapterView where the click happened.
view The view within the AdapterView that was clicked (this will be a view provided by the adapter)
position The position of the view in the adapter.
id The row id of the item that was clicked.

 

  主要说说最后三个参数,

  view——————是你点击的Listview的某一项的内容,来源于adapter。如用((TextView)arg1).getText(),可以取出点击的这一项的内容,转为string类型。

  position————是item在adapter的位置,如点击了listview第2项,而第2项对应的是adapter的第2个数值,那此时position的值就为1了。

  id———————id的值为点击了Listview的哪一项对应的数值,点击了listview第2项,那id就等于1。

  注:这些数值都是从0开始的。

  需要说明的是,当设置匿名内部类new OnItemClickListener()时,eclipse不会自动载入复写函数,要点击左边的错误提示,然后Add unimplemented methods,才能载入复写函数onItemClick()。

技术分享

 

  1. package com.conowen.listview;  
  2.   
  3. import android.app.Activity;  
  4. import android.os.Bundle;  
  5. import android.view.View;  
  6. import android.widget.AdapterView;  
  7. import android.widget.AdapterView.OnItemClickListener;  
  8. import android.widget.AdapterView.OnItemLongClickListener;  
  9. import android.widget.ArrayAdapter;  
  10. import android.widget.ListView;  
  11. import android.widget.TextView;  
  12. import android.widget.Toast;  
  13.   
  14. public class ListviewActivity extends Activity {  
  15.     /** Called when the activity is first created. */  
  16.     @Override  
  17.     public void onCreate(Bundle savedInstanceState) {  
  18.         super.onCreate(savedInstanceState);  
  19.         setContentView(R.layout.main);  
  20.         ListView lv = (ListView) findViewById(R.id.lv);  
  21.         String[] data = { "windows", "linux", "ios", "android", "wp7",  
  22.                 "Symbian" };// 定义adapter  
  23.         lv.setAdapter(new ArrayAdapter<String>(this,// 把adapter绑定到listview里面  
  24.                 android.R.layout.simple_expandable_list_item_1, data));  
  25.         // 点击事件  
  26.         lv.setOnItemClickListener(new OnItemClickListener() {  
  27.   
  28.             @Override  
  29.             public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,  
  30.                     long arg3) {  
  31.                 // TODO Auto-generated method stub  
  32.                 Toast.makeText(ListviewActivity.this, "你点击的是第" + arg3 + "项",  
  33.                         Toast.LENGTH_SHORT).show();  
  34.                 // 取出所点击的那一项的id  
  35.   
  36.             }  
  37.   
  38.         });  
  39.         // 长按事件  
  40.         lv.setOnItemLongClickListener(new OnItemLongClickListener() {  
  41.   
  42.             @Override  
  43.             public boolean onItemLongClick(AdapterView<?> arg0, View arg1,  
  44.                     int arg2, long arg3) {  
  45.                 // TODO Auto-generated method stub  
  46.                 Toast.makeText(ListviewActivity.this,  
  47.                         ((TextView) arg1).getText(), Toast.LENGTH_LONG).show();  
  48.                 // 取出点击listview某一项的内容  
  49.                 return false;  
  50.             }  
  51.   
  52.         });  
  53.     }  
  54. }  

ListView详解(一)

标签:

原文地址:http://www.cnblogs.com/xielvshi/p/4420197.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!