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

Android控件ListView用法(读取联系人示例代码)

程序员文章站 2023-12-01 20:17:10
示例代码: 这是一个读取联系人的代码: 复制代码 代码如下: package com.ui.domain; import java.util.arraylist; impo...
示例代码:
这是一个读取联系人的代码:
复制代码 代码如下:

package com.ui.domain;
import java.util.arraylist;
import java.util.list;
import android.app.activity;
import android.database.cursor;
import android.database.datasetobserver;
import android.graphics.color;
import android.os.bundle;
import android.provider.contactscontract;
import android.util.log;
import android.view.menu;
import android.view.view;
import android.view.viewgroup;
import android.widget.edittext;
import android.widget.listadapter;
import android.widget.listview;
public class callphone extends activity {



@override
protected void oncreate(bundle savedinstancestate) {
// todo auto-generated method stub
super.oncreate(savedinstancestate);
setcontentview(r.layout.call_phone);
//联系人列表
final list<string> datalist=new arraylist<string>();
// 获得所有的联系人
cursor cur = getcontentresolver().query(
contactscontract.contacts.content_uri,
null,
null,
null,
contactscontract.contacts.display_name
+ " collate localized asc");
while (cur.movetonext()) {
int idcolumn = cur.getcolumnindex(contactscontract.contacts._id);
int displaynamecolumn = cur.getcolumnindex(contactscontract.contacts.display_name);
string phonenumber=cur.getstring(1);
string displayname = cur.getstring(displaynamecolumn);
datalist.add(displayname+":"+phonenumber);
log.i("联系人名称:", displayname);
}
cur.close();//关闭游标

listview listview=(listview)findviewbyid(r.id.listview1);
listview.setadapter(new listadapter() {

@override
public void unregisterdatasetobserver(datasetobserver paramdatasetobserver) {
// todo auto-generated method stub

}

@override
public void registerdatasetobserver(datasetobserver paramdatasetobserver) {
// todo auto-generated method stub

}

@override
public boolean isempty() {
// todo auto-generated method stub
return false;
}

@override
public boolean hasstableids() {
// todo auto-generated method stub
return false;
}

@override
public int getviewtypecount() {
// todo auto-generated method stub
return datalist.size();
}

@override
public view getview(int paramint, view paramview, viewgroup paramviewgroup) {
// todo auto-generated method stub
edittext text=new edittext(callphone.this);
text.setbackgroundcolor(color.white);
text.settext(datalist.get(paramint));
return text;
}

@override
public int getitemviewtype(int paramint) {
// todo auto-generated method stub
return 0;
}

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

@override
public object getitem(int paramint) {
// todo auto-generated method stub
return datalist.get(paramint);
}

@override
public int getcount() {
// todo auto-generated method stub
return datalist.size();
}

@override
public boolean isenabled(int paramint) {
// todo auto-generated method stub
return false;
}

@override
public boolean areallitemsenabled() {
// todo auto-generated method stub
return false;
}
});



}
@override
protected void ondestroy() {
// todo auto-generated method stub
super.ondestroy();
}
@override
public boolean oncreateoptionsmenu(menu menu) {
// todo auto-generated method stub
getmenuinflater().inflate(r.menu.call_phone, menu);
return true;
}

}

这个listview有个setadapter 适配器,里面可以直接实现接口,或者写个类,实现
复制代码 代码如下:

listadapter

这个接口
复制代码 代码如下:

listview.setadapter

在定义一个list 集合 泛型为string
接口中有个方法:
复制代码 代码如下:

@override
public object getitem(int paramint) {
// todo auto-generated method stub
return datalist.get(paramint);
}

return 就是 返回list的数据
paramint 这是索引号
直接取list.get(索引)
这样就可以了
还要实现上述的几个方法
注意,如果list!>1 就会报错