Android控件ListView用法(讀取聯(lián)系人示例代碼)
更新時(shí)間:2013年06月08日 16:37:51 作者:
本文以一個(gè)讀取聯(lián)系人的代碼為大家講解下Android控件中ListView的使用方法,這個(gè)listView有個(gè)setAdapter 適配器,里面可以直接實(shí)現(xiàn)接口,或者寫(xiě)個(gè)類(lèi)
示例代碼:
這是一個(gè)讀取聯(lián)系人的代碼:
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);
//聯(lián)系人列表
final List<String> dataList=new ArrayList<String>();
// 獲得所有的聯(lián)系人
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("聯(lián)系人名稱(chēng):", disPlayName);
}
cur.close();//關(guān)閉游標(biāo)
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;
}
}
這個(gè)listView有個(gè)setAdapter 適配器,里面可以直接實(shí)現(xiàn)接口,或者寫(xiě)個(gè)類(lèi),實(shí)現(xiàn)
ListAdapter
這個(gè)接口
listView.setAdapter
在定義一個(gè)list 集合 泛型為String
接口中有個(gè)方法:
@Override
public Object getItem(int paramInt) {
// TODO Auto-generated method stub
return dataList.get(paramInt);
}
return 就是 返回list的數(shù)據(jù)
paramInt 這是索引號(hào)
直接取list.get(索引)
這樣就可以了
還要實(shí)現(xiàn)上述的幾個(gè)方法
注意,如果list!>1 就會(huì)報(bào)錯(cuò)
這是一個(gè)讀取聯(lián)系人的代碼:
復(fù)制代碼 代碼如下:
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);
//聯(lián)系人列表
final List<String> dataList=new ArrayList<String>();
// 獲得所有的聯(lián)系人
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("聯(lián)系人名稱(chēng):", disPlayName);
}
cur.close();//關(guān)閉游標(biāo)
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;
}
}
這個(gè)listView有個(gè)setAdapter 適配器,里面可以直接實(shí)現(xiàn)接口,或者寫(xiě)個(gè)類(lèi),實(shí)現(xiàn)
復(fù)制代碼 代碼如下:
ListAdapter
這個(gè)接口
復(fù)制代碼 代碼如下:
listView.setAdapter
在定義一個(gè)list 集合 泛型為String
接口中有個(gè)方法:
復(fù)制代碼 代碼如下:
@Override
public Object getItem(int paramInt) {
// TODO Auto-generated method stub
return dataList.get(paramInt);
}
return 就是 返回list的數(shù)據(jù)
paramInt 這是索引號(hào)
直接取list.get(索引)
這樣就可以了
還要實(shí)現(xiàn)上述的幾個(gè)方法
注意,如果list!>1 就會(huì)報(bào)錯(cuò)
您可能感興趣的文章:
- android ListView和ProgressBar(進(jìn)度條控件)的使用方法
- Android控件之ListView用法實(shí)例詳解
- Android ExpandableListView展開(kāi)列表控件使用實(shí)例
- Android UI控件ExpandableListView基本用法詳解
- 淺談Android開(kāi)發(fā)中ListView控件性能的一些優(yōu)化方法
- android使用ExpandableListView控件實(shí)現(xiàn)小說(shuō)目錄效果的例子
- Android控件之使用ListView實(shí)現(xiàn)時(shí)間軸效果
- Android 自定義彈性L(fǎng)istView控件實(shí)例代碼(三種方法)
- Android編程之控件ListView使用方法
- Android控件ListView使用方法詳解
相關(guān)文章
Flutter交互并使用小工具管理其狀態(tài)widget的state詳解
這篇文章主要為大家介紹了Flutter交互并使用小工具管理其狀態(tài)widget的state詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-12-12
Android WebView 不支持 H5 input type="file" 解決方法
這篇文章主要介紹了Android WebView 不支持 H5 input type="file" 解決方法,需要的朋友可以參考下2017-06-06
Android?應(yīng)用程序的啟動(dòng)流程示例詳解
這篇文章主要為大家介紹了Android?應(yīng)用程序的啟動(dòng)流程示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-03-03
webview添加參數(shù)與修改請(qǐng)求頭的user-agent實(shí)例
這篇文章主要介紹了webview添加參數(shù)與修改請(qǐng)求頭的user-agent實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-03-03
Android TextView自定義數(shù)字滾動(dòng)動(dòng)畫(huà)
這篇文章主要為大家詳細(xì)介紹了Android TextView自定義數(shù)字滾動(dòng)動(dòng)畫(huà),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-04-04
Android開(kāi)發(fā)中MotionEvent坐標(biāo)獲取方法分析
這篇文章主要介紹了Android開(kāi)發(fā)中MotionEvent坐標(biāo)獲取方法,結(jié)合實(shí)例形式分析了MotionEvent獲取坐標(biāo)的相關(guān)函數(shù)使用方法與相關(guān)注意事項(xiàng),需要的朋友可以參考下2016-02-02
android dialog邊框去除白色邊框?qū)崿F(xiàn)思路及代碼
android dialog邊框含有白色真是美中不足啊,本文將介紹如何去除白色邊框,有思路及代碼,感興趣的朋友可以了解下2013-01-01
詳解VirtualApk啟動(dòng)插件Activity
這篇文章主要介紹了詳解VirtualApk啟動(dòng)插件Activity,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-05-05

