我正在尝试阅读手机上的联系人姓名,但是当涉及setListAdapter()
时,我一直收到上述错误。
当我extends ListActivity
而不是Activity
时,没有错误,但应用程序强制关闭。
此外,我尝试通过在Create {扩展Activity
内部创建另一个类来扩展ListActivity
和listActivity
,但没有显示任何内容。我在create.xml
列表视图上显示。当用户点击在我的create.java
文件
main.xml
Create.java
import android.app.Activity;
import android.app.ListActivity;
import android.database.Cursor;
import android.os.Bundle;
import android.provider.ContactsContract;
import android.widget.ArrayAdapter;
public class Create extends Activity {
@Override
protected void onCreate(Bundle savedInstancesState)
{
super.onCreate(savedInstancesState);
setContentView(R.layout.create);
Cursor cursor = getContentResolver().query(
ContactsContract.Contacts.CONTENT_URI, null, null, null, null);
ArrayAdapter<String> list = new ArrayAdapter<String>(this, R.layout.create);
while(cursor.moveToNext()) {
String name = cursor.getString(cursor
.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
list.add(name);
}
setListAdapter(list);
}
}
这是create.xml
<?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="vertical" >
<TextView
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:layout_gravity="center"
android:text="@string/create_button_title"
android:textSize="24.5sp"
android:layout_marginTop="24dip"/>
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_marginTop="22dip">
<EditText
android:id="@+id/contacts_label"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_toLeftOf="@+id/choose_contacts"
android:hint="@string/choose_contacts" />
<Button
android:id="@+id/choose_contacts"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:text="@string/contacts_button"
/>
<ListView
android:id="@+id/contacts_list"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="44dip"
></ListView>
</RelativeLayout>
答案 0 :(得分:0)
要extends Activity
ListView
,您需要在[{1}}
onCreate()
的引用
ListView lv = (ListView) findViewById(R.id.contacts_list);`
然后使用方法setAdapter()
lv.setAdapter(list);
setListAdapter()
和getListView()
是扩展ListActivity
时的便捷方法,在扩展任何其他类时无效。
至于为什么当你有extends ListActivity
它没有工作时,很难说没有看到崩溃中的堆栈跟踪。
If you look at the docs`布局应该是
resource包含在实例化视图时使用的TextView的布局文件的资源ID。
它应该只包含 一个TextView
。如果您想要其他View
,则应创建自定义Adapter
并覆盖getView()
。这一点都在最顶层的文档中进行了解释。
您可以通过在Google上搜索类似“自定义适配器ListView Android”的内容,找到大量有关如何执行此操作的教程/示例。