0

好的,伙计们,作为一个 Android 新手,我正在努力解决各种问题。我的问题是我试图在“onListItemClick”中开始一个新的意图活动。我为此设置了方法,但是当我在单击列表中的项目时运行 AVD 时,没有任何反应,意图没有启动。

如果我将超类更改为“ListActivity”,我会收到一条崩溃消息“您的内容必须有一个 id 属性为“android.r.id.list”的列表视图”

谁能告诉我为什么意图不会从单击列表视图中的项目开始?这是我的列表视图类:

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);
}




}
4

5 回答 5

2

如果你要使用 aListActivity那么你不需要这一行:

ListView listContent = (ListView)findViewById(R.id.contentList);

但是现在引用的那个特定ListView的(假设它在相应的xml布局中)必须将它的id更改为

<ListView
  android:id="@android:id/list"
.....
于 2013-01-11T17:37:40.447 回答
0

我收到一条崩溃消息“您的内容必须有一个 id 属性为 'android.r.id.list' 的列表视图”

当您扩展ListActivity但 xml 中没有属性列表时会发生这种情况(在您的情况下为 layout.xml)。阅读此示例以了解如何创建 ListActivity

扩展活动或列表活动?

这个问题的答案取决于您的要求。

于 2013-01-11T17:34:54.353 回答
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>
于 2013-01-11T17:36:37.063 回答
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);
        }
    });
于 2013-01-11T17:43:08.413 回答
0

活动 - 用于正常目的 ListActivity - 用于您更专注于显示列表的地方。

ListActivity 相对于 Activity 的优势:

  1. 如果列表只有文本显示,则甚至不需要定义布局文件,因此无需setContentView()调用。
  2. 如果我们需要在布局文件中显示除列表以外的其他内容(比如 TextView),只需使用 @android:id/xxx ,android.R.layout.simple_list_item_1适配器中的布局资源参数将对应于 xml 中定义的此列表。
  3. 与其先定义列表然后调用setAdapter()它,不如setListAdapter()直接调用。
  4. 无需setOnClickListener()在列表上实现 OnClickListener,然后使用onItemClick(). 只需使用onListItemClick().
于 2015-05-23T16:33:19.220 回答