如何将联系人从电话填充到自定义列表视图?
我创建了一个自定义的ListView使用BaseAdapter
现在我要填充此列表视图与联系人姓名和电话号码从手机book..I正尝试这个..如何将联系人从电话填充到自定义列表视图?
import java.util.ArrayList;
import android.app.Activity;
import android.database.Cursor;
import android.os.Bundle;
import android.provider.ContactsContract;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.SimpleCursorAdapter;
import android.widget.TextView;
import android.widget.Toast;
public class Rabtaye extends Activity {
ListView msgList;
ArrayList<MessageDetails> details;
AdapterView.AdapterContextMenuInfo info;
Cursor cursor;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.layout_main);
msgList = (ListView) findViewById(R.id.MessageList);
details = new ArrayList<MessageDetails>();
MessageDetails Detail = new MessageDetails();
cursor = getContentResolver().query(
ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, null,
null, null);
startManagingCursor(cursor);
String info[] = { ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME,
ContactsContract.CommonDataKinds.Phone.NUMBER,
ContactsContract.CommonDataKinds.Phone._ID };
for(String a:info){
Detail.setName(a);
}
Detail.setNumber("0313");
details.add(Detail);
// int to[] = { R.id.name, R.id.number };
// ListAdapter cursada = new SimpleCursorAdapter(this,
// android.R.layout.simple_expandable_list_item_2, cursor, info,
// to);
msgList.setAdapter(new CustomAdapter(details, this));
msgList.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
TextView s = (TextView) arg1.findViewById(R.id.name);
String abc = s.getText().toString();
Toast.makeText(Rabtaye.this, abc, Toast.LENGTH_LONG).show();
}
});
}
}
我用不同的方式,但我不能使用联系人姓名或号码填充ListView。在这个代码中,我必须静态添加名称和编号......我很困惑这里..帮助将不胜感激。提前致谢。我是新手所以请在我容易.. :)
嗯。你在正确的轨道上,但我认为你有点徘徊。
ListView是一个视图对象,而不是BaseAdapter。据我所知你的代码,你不需要一个自定义适配器为您的ListView。
你应该做的是将常规CursorAdapter绑定到ListView,使用CursorLoader从Contacts Provider加载你想要的联系人数据,然后将生成的光标移动到CursorAdapter。
您可以在此Android培训课程中找到相关说明: Loading Data in the Background。
你想在你的自定义ListView,你不能从ListView本身得到什么?
如果你不仅仅是一个项目列表放入ListView(它看起来像你在做名字,数字等),你有创建您自己的自定义适配器。无论是在你的活动中,还是在一个新班级中,都可以扩展BaseAdapter类。那么你必须重写getView()
方法。这就是每当新物品充气时所谓的。
当您创建它时,您将ArrayList
传递给BaseAdapter
。适配器的getView()
方法是您对逻辑进行编码以获取数据并将其作为列表项呈现的位置。您必须为每个列表项目定义一个新的XML文件,其中包含您的TextViews
以及每个列表项目中不同孩子的内容,这就是您填充数据的内容。
如果您搜索“baseadapter”,那么就有一堆例子。这是one,给出了一个相当不错的介绍。
事情是,我想填充所有联系人的整个列表视图,并与他们的复选框。我试过默认的ListView,但它不显示Numbers。这就是为什么我切换到自定义列表视图。 – 2013-03-15 17:03:00