gpt4 book ai didi

java - 如何在一行中列出号码和联系人

转载 作者:行者123 更新时间:2023-12-01 09:02:48 25 4
gpt4 key购买 nike

我正在做一项作业,要求我在一行中显示姓名和号码。我尝试创建一个自定义类“联系人”,以容纳字符串“姓名”和“号码”。代码粘贴如下:

import android.app.ListActivity;
import android.database.Cursor;
import android.os.Bundle;
import android.provider.ContactsContract;
import android.widget.ArrayAdapter;

public class MainActivity extends ListActivity {

@Override
public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

//1. The class ContactsContract allows access to various types of data stored in the phone
//Examples: Contacts, Phone settings, Contact groups etc.

//Creates cursor to search contacts
Cursor cursor = getContentResolver().query(
ContactsContract.Contacts.CONTENT_URI, null, null, null, null);

//Creates array to store string (names from contact)
ArrayAdapter<Contact> list = new ArrayAdapter<Contact>(this,
R.layout.activity_main);



//2. Using the ContactsContract class above, we got a cursor to the data. Now we iterate through it to get all the data

while (cursor.moveToNext()) {

//3. In our example, we get the DISPLAY_NAME but other data elements are also available

String name = cursor.getString(cursor
.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
String number = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
Contact newContact = new Contact();
newContact.setName(name);
newContact.setNumber(number);
list.add(newContact);
}

setListAdapter(list);
}
}

这是我的联系人类别:

public class Contact {
private String name;
private String number;

void setName(String Name){
name = Name;
}

void setNumber (String Number){
number = Number;
}
}

最佳答案

实现这一目标的关键是管理联系人列表的客户适配器。

CustomeAdapter.java

public class CustomeAdapter extends ArrayAdapter {
private final Activity activity;
private final List stocks;

public CustomeAdapter(Activity activity, List objects) {
super(activity, R.layout.row_list_item , objects);
this.activity = activity;
this.stocks = objects;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
View rowView = convertView;
ManageView mview = null;

if(rowView == null)
{

LayoutInflater inflater = activity.getLayoutInflater();
rowView = inflater.inflate(R.layout.row_list_item, null);


mview= new ManageView();
mview.namev = (TextView) rowView.findViewById(R.id.nameid);
mview.numberv = (TextView) rowView.findViewById(R.id.numberid);

// Cache the view objects
rowView.setTag(mview);
} else {
mview= (ManageView) rowView.getTag();
}


Contact currentContact = stocks.get(position);
mview.namev.setText(currentContact.getName());
mview.numberv.setText(currentContact.getNumber());

return rowView;
}

protected static class ManageView
protected TextView namev;
protected TextView numberv;
}
}

row_list_item.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextView
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:id="@+id/nameid" />
<TextView
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:id="@+id/numberid" />
</LinearLayout>

在您的 Activity 中

  /* Creates array to store string (names from contact)
ArrayAdapter<Contact> list = new ArrayAdapter<Contact>(this,
R.layout.activity_main);*/
ArrayAdapter<Contact> list = new ArrayAdapter<Contact>();
while (cursor.moveToNext()) {

//3. In our example, we get the DISPLAY_NAME but other data elements are also available

String name = cursor.getString(cursor
.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
String number = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
Contact newContact = new Contact();
newContact.setName(name);
newContact.setNumber(number);
list.add(newContact);
}
setListAdapter(new CustomeAdapter(this, list));

关于java - 如何在一行中列出号码和联系人,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41539168/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com