欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android ListView列表视图的使用方法

程序员文章站 2022-03-08 17:16:59
前言 当你要将某个从数据库或者文件中获得相当大的数据,在界面中向用户展示的时候,由于定义一个个视图比较麻烦,android中提供了类似于数组的控件–listview。...

前言

当你要将某个从数据库或者文件中获得相当大的数据,在界面中向用户展示的时候,由于定义一个个视图比较麻烦,android中提供了类似于数组的控件–listview。

使用方法:

假设我们要转的数据是一个person对象数组

package cn.zhuangzhihuang.mylist;

public class person {
 private string name;
 private string tel;
 
 
 public person(string name, string tel) {
 super();
 this.name = name;
 this.tel = tel;
 }
 
 
 public string getname() {
 return name;
 }
 
 public void setname(string name) {
 this.name = name;
 }
 
 public string gettel() {
 return tel;
 }
 
 public void settel(string tel) {
 this.tel = tel;
 }
 
 public string tostring() {
 return "点击的联系人为" + this.getname() +"\n电话号码为" + this.gettel();
 }
 
}
person[] db = {
     new person("张三","18555555555"),
     new person("李四","18555555556"),
     new person("王五","18555555557"),
     new person("赵六","18555555558"),
     new person("邓七","18555555559")   
     
    };
    
list<person> friend_list;    
friend_list = new arraylist<person>();
for(int i=0;i<db.length;i++) {
 friend_list.add(db[i]);
}

1、首先,你需要在xml中加入一个listview控件:

<listview
  android:id="@+id/data_view"
  android:layout_width="match_parent"
  android:layout_height="wrap_content" >
</listview>

2、接着你需要创建一个适配器myadapter类,这个适配器的作用时将你要展示的数据转成可见格式也就时view。

class myadapter extends baseadapter {

 @override
 public int getcount() { //返回表的长度
  // todo auto-generated method stub
  return friend_list.size();
 }

 @override
 public object getitem(int position) { //返回表的index位置的元组
  // todo auto-generated method stub
  return friend_list.get(position); 
 }

 @override
 public long getitemid(int position) {
  // todo auto-generated method stub
  return position;
 }

 @override
 public view getview(int position, view convertview, viewgroup parent) { //就像等到一个对象数组的某一个元素
  // todo auto-generated method stub
  view view = view.inflate(mainactivity.this, r.layout.item, null);
  textview tv_item_name = (textview) view.findviewbyid(r.id.tv_item_name);
  textview tv_item_tel = (textview) view.findviewbyid(r.id.tv_item_tel);
  tv_item_name.settext(friend_list.get(position).getname());
  tv_item_tel.settext(friend_list.get(position).gettel());
  return view;
  //初始化这个listview会调用到这个方法,因为要把传进去的对象数组的每个元素转成view加入到listview中
 }
   
  }

3、然后要在xml中写下你要转成的view的模板

<?xml version="1.0" encoding="utf-8"?><linearlayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:orientation="horizontal" >
  
  <textview
    android:id="@+id/tv_item_name"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_weight="1"
    android:gravity="center"
    android:textsize="20sp"
    />
  
  <textview
    android:id="@+id/tv_item_tel"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_weight="1"
    android:gravity="center"
    android:textsize="20sp"
    />

</linearlayout>

4、最后在mainactivity中把listview的适配器设置一下。调用setadapter这个方法

data_view.setadapter(myadapter);

android代码:
xml:

<linearlayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  android:orientation="vertical" >
  
  <linearlayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    >
  
   <textview
     android:id="@+id/tv1"
     android:layout_width="0dp"
     android:layout_height="wrap_content"
     android:layout_weight="1"
     android:gravity="center"
     android:text="姓名"
     android:textsize="20sp"
     />
   
   <textview
     android:id="@+id/tv2"
     android:layout_width="0dp"
     android:layout_height="wrap_content"
     android:layout_weight="1"
     android:gravity="center"
     android:text="联系电话"
     android:textsize="20sp"
     />
   
   </linearlayout>
   
   <listview
     android:id="@+id/data_view"
     android:layout_width="match_parent"
     android:layout_height="wrap_content" >
   </listview>


</linearlayout>

mainactivity:

package cn.zhuangzhihuang.mylist;

import java.util.arraylist;
import java.util.list;

import android.app.activity;
import android.os.bundle;
import android.view.menu;
import android.view.menuitem;
import android.view.view;
import android.view.viewgroup;
import android.widget.adapterview;
import android.widget.adapterview.onitemclicklistener;
import android.widget.baseadapter;
import android.widget.listview;
import android.widget.textview;
import android.widget.toast;

public class mainactivity extends activity {

 list<person> friend_list;
 
  @override
  protected void oncreate(bundle savedinstancestate) {
    super.oncreate(savedinstancestate);
    setcontentview(r.layout.activity_main);
    
    listview data_view = (listview) findviewbyid(r.id.data_view);
    
    person[] db = {
     new person("张三","18555555555"),
     new person("李四","18555555556"),
     new person("王五","18555555557"),
     new person("赵六","18555555558"),
     new person("邓七","18555555559")   
     
    };
    
    friend_list = new arraylist<person>();
    for(int i=0;i<db.length;i++) {
     friend_list.add(db[i]);
    }
    
    //自定义适配器
    myadapter myadapter = new myadapter();
    data_view.setadapter(myadapter);
    
    data_view.setonitemclicklistener(new onitemclicklistener() {

  @override
  public void onitemclick(adapterview<?> parent, view view,
   int position, long id) {
  // todo auto-generated method stub
  string temp = friend_list.get((int)id).tostring();
  
  toast.maketext(mainactivity.this, temp, 0).show();
  
  }
 });
  }
  
  class myadapter extends baseadapter {

 @override
 public int getcount() { //返回表的长度
  // todo auto-generated method stub
  return friend_list.size();
 }

 @override
 public object getitem(int position) { //返回表的index位置的元组
  // todo auto-generated method stub
  return friend_list.get(position); 
 }

 @override
 public long getitemid(int position) {
  // todo auto-generated method stub
  return position;
 }

 @override
 public view getview(int position, view convertview, viewgroup parent) { //就像等到一个对象数组的某一个元素
  // todo auto-generated method stub
  view view = view.inflate(mainactivity.this, r.layout.item, null);
  textview tv_item_name = (textview) view.findviewbyid(r.id.tv_item_name);
  textview tv_item_tel = (textview) view.findviewbyid(r.id.tv_item_tel);
  tv_item_name.settext(friend_list.get(position).getname());
  tv_item_tel.settext(friend_list.get(position).gettel());
  return view;
  //初始化这个listview会调用到这个方法,因为要把传进去的对象数组的每个元素转成view加入到listview中
 }
   
  }
}

效果:

Android ListView列表视图的使用方法

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。