当前位置: 移动技术网 > 移动技术>移动开发>Android > Android ListView列表视图的使用方法

Android ListView列表视图的使用方法

2019年07月29日  | 移动技术网移动技术  | 我要评论

前言

当你要将某个从数据库或者文件中获得相当大的数据,在界面中向用户展示的时候,由于定义一个个视图比较麻烦,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中
 }
   
  }
}

效果:

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

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网