好的家伙,所以作为一个Android新手我正在通过各种方式工作。我的问题是我试图在'onListItemClick'中开始一个新的意图活动。我为此设置了方法,但是当我在单击列表中的项目时运行AVD时,没有任何反应,意图无法启动。
如果我将超类更改为'ListActivity',我会收到一条崩溃消息:'您的内容必须有一个listview,其id属性为'android.r.id.list''
任何人都可以告诉我为什么单击列表视图中的项目不会开始意图? 这是我的listview类:
package com.example.sqliteexample;
import android.app.Activity;
import android.app.ListActivity;
import android.content.Intent;
import android.database.Cursor;
import android.os.Bundle;
import android.support.v4.widget.SimpleCursorAdapter;
import android.view.View;
import android.widget.ListView;
import android.widget.Toast;
public class SQLView extends ListActivity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
HotOrNot H = new HotOrNot(this, null, null);
setContentView(R.layout.layout);
ListView listContent = (ListView)findViewById(R.id.contentList);
HotOrNot Content = new HotOrNot(this, null, null);
Content.open();
Cursor cursor = Content.getData();
startManagingCursor(cursor);
@SuppressWarnings("static-access")
String [] from = new String [] {H.KEY_NAME, H.KEY_HOTNESS};
int [] to = new int [] {R.id.txtName, R.id.txtAge};
@SuppressWarnings("deprecation")
SimpleCursorAdapter cursorAdapter = new SimpleCursorAdapter(this, R.layout.entries, cursor, from, to);
listContent.setAdapter(cursorAdapter);
}
public void onListItemClick(ListView l, View v, int posistion, long id)
{
Intent i = new Intent("com.example.sqliteexample.SQLiteExample");
startActivity(i);
}
}
答案 0 :(得分:2)
如果您要使用ListActivity
,那么您不需要这一行:
ListView listContent = (ListView)findViewById(R.id.contentList);
但是现在引用的特定ListView
(如果它位于相应的xml布局中)必须将其ID更改为
<ListView
android:id="@android:id/list"
.....
答案 1 :(得分:0)
我收到一条崩溃消息“你的内容必须有一个列表视图的ID 属性是'android.r.id.list''
当您扩展ListActivity
但xml中没有属性列表(在您的案例中为layout.xml)时会发生这种情况。阅读this example on how to create ListActivity。
扩展活动或列表活动?
这个问题的答案取决于您的要求。
答案 2 :(得分:0)
在layout.xml文件中调整ListView元素以使其具有类似于下面的内容:最重要的是android:id
行
<ListView
android:id="@android:id/list"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true" >
</ListView>
答案 3 :(得分:0)
listContent.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1,
int position, long id) {
Intent i = new Intent("com.example.sqliteexample.SQLiteExample");
startActivity(i);
}
});
答案 4 :(得分:0)
活动 - 用于正常目的 ListActivity - 用于更集中于显示列表的位置。
ListActivity优于Activity:
setContentView()
。android.R.layout.simple_list_item_1
将对应于xml中定义的此列表setAdapter()
,而是直接致电setListAdapter()
。setOnClickListener()
,然后使用onItemClick()
。只需使用onListItemClick()
。