【问题标题】:confused about how listview and listadapter works对 listview 和 listadapter 的工作方式感到困惑
【发布时间】:2014-04-19 05:08:36
【问题描述】:

我正在尝试制作一个非常简单的列表视图来学习。当我在列表视图(从 xml 访问)上设置适配器时,应用程序崩溃,但是当我只是将 setAdapter 放在列表视图后面时,列表视图可以工作。我在三星 Galaxy s3 智能手机上运行它。

这是我的代码

ListviewAndroidExample.java(即使我在onCreate之后将setContentView放到R.layout.activity_main,它也会崩溃)

 package com.example.listview;
    import android.app.Activity;
    import android.os.Bundle;
    import android.widget.ArrayAdapter;
    import android.widget.ListView;

    public class ListViewAndroidExample extends ListActivity {

        ListView list;

        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
             String[] Home = {
                    "BEDROOM",
                    "BATHROOM",
                    "KITCHEN",
                    "WASHROOMS",
                    "BASEMENT"};
            ListView list=(ListView)findViewById(R.id.mylist);
            ArrayAdapter<String> adapter = new ArrayAdapter<String>    (this,android.R.layout.simple_list_item_1, Home);
            list.setAdapter(adapter);


}}

我的 xml 文件(activity_main.xml)

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:orientation="vertical"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     android:paddingLeft="8dp"
     android:paddingRight="8dp">

 <ListView android:id="@+id/mylist"
           android:layout_width="match_parent"
           android:layout_height="match_parent"
           android:background="#00FF00"
           android:layout_weight="1"
           android:divider="#FFCC00"
           android:dividerHeight="4px"/> 
           android:drawSelectorOnTop="false"/>     
</LinearLayout>

还请告诉我如何在单击列表项时进行长时间的祝酒,以说明单击了哪个(位置)列表项。

【问题讨论】:

  • 在单独的线程中询问您的“项目点击”问题,因为该问题与标题无关,这会导致人们对您的问题投反对票。

标签: android listview crash listadapter


【解决方案1】:

当你扩展 ListActivity 时,你必须在你的布局文件中放置一个 XML 列表视图。

ListView 的 id 应该是:"@android:id/list"

这就是 Android 查找列表布局的方式。

您可能需要阅读ListActivity and Custom Layout 以更加熟悉这个概念。

所以改变你的布局:

android:id="@+id/listView1"

收件人:

android:id="@android:id/list"

编辑:

还请告诉我如何做一个长长的吐司会说 在单击列表项时单击了哪个(位置)列表项。

好的,用这个来点击项目。

your_listview_object.setOnItemClickListener(new OnItemClickListener()
{
    @Override 
    public void onItemClick(AdapterView<?> arg0, View arg1,int position, long arg3)
    { 
        Toast.makeText(YourActivity.this, "Clicked on list item " + position, Toast.LENGTH_LONG).show();
    }
});

编辑 2:

如果您是 Android 新手,我建议您先尝试并掌握在 extends Activity 的简单活动中使用 ListView,然后再选择 extends ListActivity 选项。

【讨论】:

  • 请告诉我如何在主要活动中编写有关获取列表视图的代码(例如“ListView listview=(ListView)findViewBy....”
  • 但是 vogella 不使用您建议的相同 android ID。他为什么要把字符串数组转换成arraylist。其他一些人不这样做。他使用了stablearrayadapter。这是为什么呢?
  • 谢谢各位。现在它正在工作!!!!我在 onCreate 之后添加了 setContentView(R.layout.activity_main),使用了扩展 Activity 并且没有使用 android id。非常感谢各位,developer.android.com 中没有提到这些要点。谢谢
  • 欢迎。保持饥饿:)
【解决方案2】:

当你扩展列表活动时,这是默认的 & 由 android 提供,你必须使用

android:id="@android:id/list"

而不是

@+id/mylist

【讨论】:

    猜你喜欢
    • 2012-08-24
    • 2019-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-10
    • 1970-01-01
    • 1970-01-01
    • 2019-08-31
    相关资源
    最近更新 更多