【问题标题】:Displaying list items in ListView在 ListView 中显示列表项
【发布时间】:2010-10-16 10:13:34
【问题描述】:

我有以下 main.xml:

<?xml version="1.0" encoding="utf-8"?>
<AbsoluteLayout
android:id="@+id/widget0"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
xmlns:android="http://schemas.android.com/apk/res/android"
>
    <ListView
    android:id="@+id/listview"
    android:layout_width="315px"
    android:layout_height="379px"
    android:layout_x="2px"
    android:layout_y="50px"
    >
    </ListView>
    <TextView
    android:id="@+id/title"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Select device:"
    android:textSize="17sp"
    android:layout_x="-2px"
    android:layout_y="1px"
    >
    </TextView>
    <Button
    android:id="@+id/refresh"
    android:layout_width="109px"
    android:layout_height="wrap_content"
    android:text="Refresh"
    android:layout_x="209px"
    android:layout_y="7px"
    >
    </Button>
</AbsoluteLayout>

主类除了绘制布局什么都不做。

我有以下列表项的类和布局:

<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:padding="10dp"
    android:textSize="16sp" >
</TextView>

package com.android.bluetoothp2p;

import android.app.ListActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;

public class BTListView extends ListActivity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);

      setListAdapter(new ArrayAdapter<String>(this, R.layout.list_item, COUNTRIES));

      ListView lv = getListView();
      lv.setTextFilterEnabled(true);

      lv.setOnItemClickListener(new OnItemClickListener() {
        public void onItemClick(AdapterView<?> parent, View view,
            int position, long id) {
          // When clicked, show a toast with the TextView text
          Toast.makeText(getApplicationContext(), ((TextView) view).getText(),
              Toast.LENGTH_SHORT).show();
        }
      });
    }

Countries 只是一个包含国家列表和一些虚拟值的数组。

现在,如何让BTListView类的列表项进入主类的ListView(带@+id/listview)?

编辑:现在我的列表有效,但不再可点击。 这是代码:

ListView lv = getListView();
      lv.setTextFilterEnabled(true);

      lv.setOnItemClickListener(new OnItemClickListener() {
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
          // When clicked, show a toast with the TextView text
          Toast.makeText(getApplicationContext(), "lolwat", Toast.LENGTH_SHORT).show();
        }
      });

【问题讨论】:

    标签: android android-listview


    【解决方案1】:

    您必须在布局中为您的 ListView 提供 ID @android:id/list - 有关详细信息,请参阅 http://developer.android.com/reference/android/app/ListActivity.html。 ListActivity 类使用此 ID 来查找 ListView 实例。

    【讨论】:

    • 谢谢,将项目添加到列表中,然后创建主布局,使列表进入您提到的 ID 的列表视图。
    • 但是,这使得列表项无法点击
    • 是的,我想你应该在你的活动中重写 onListItemClick() 方法而不是设置一个自定义处理程序:developer.android.com/reference/android/app/…
    • 只需创建一个名为 onListItemClick 的新方法 - 如果您按 Ctrl + Space Eclipse 应该会自动建议使用适当的参数覆盖超级方法。只需将您当前 onItemClick 方法中的代码放在那里。然后你可以删除你的 setOnItemClickListener 调用。您不需要手动设置点击侦听器,因为 ListActivity 会自动为您执行此操作。 :-) 如果您的适配器为空并且您使用该 ID 定义了一个视图,它还会隐藏您的列表视图并显示一个名为“@android:id/empty”的特殊视图。
    猜你喜欢
    • 1970-01-01
    • 2013-01-08
    • 2017-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-13
    • 2013-12-10
    • 2012-06-24
    相关资源
    最近更新 更多