gpt4 book ai didi

java - Android ListView 不显示数据...这很新,并且肯定我做错了什么

转载 作者:行者123 更新时间:2023-12-02 07:21:36 25 4
gpt4 key购买 nike

这是我的第二个应用程序,也是第一个使用 ListActivity 的应用程序。某处的某些东西运行得不太好 - Activity (ShowWidget) 显示 - 但列表是空的。

这是我的 ListActivity 代码:

import android.app.ListActivity;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;

public class ShowWidget extends ListActivity {
DataProvider db = new DataProvider(ShowWidget.this);
public static String sound;
MediaPlayer mp = new MediaPlayer();
@SuppressWarnings("unused")
private ListView LV;

@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
Toast.makeText(getApplicationContext(), "Loading your settings.", Toast.LENGTH_SHORT).show();

LV = (ListView)findViewById(android.R.id.list);
setListAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, PENS));
getListView().setTextFilterEnabled(true);

// change to our configure view
setContentView(R.layout.widget_show);

/*db.open();
Cursor cursor = db.getRecord(1);
ShowWidget.sound = cursor.getString(cursor.getColumnIndex("sound"));
cursor.close();
db.close();*/
}

static final String[] PENS = new String[]{
"MONT Blanc", "Gucci", "Parker", "Sailor",
"Porsche Design", "Rotring", "Sheaffer", "Waterman"
};

protected void onListItemClick(ListView l, View v, int position, long id) {
super.onListItemClick(l, v, position, id);
Object o = this.getListAdapter().getItem(position);
String pen = o.toString();
Toast.makeText(this, "You have chosen the pen: " + " " + pen, Toast.LENGTH_LONG).show();
}

public void play(){
}
}

和我的布局:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/widgetShow">

<ListView
android:layout_width="0dp"
android:layout_height="0dp"
android:id="@android:id/list"
android:layout_weight="1">

</ListView>

</LinearLayout>

就像我说的,我在这里做错了 - 显示 Activity ,但不显示存储在 PENS 中的数据。任何正确方向的想法或观点将不胜感激!如果问题不清楚,请发表评论,我将编辑问题以使其更清楚。

最佳答案

这是您处理 UI 组件的顺序。首先,您从默认布局中膨胀ListView(导入以实现),但之后,您基本上告诉Activity使用其他布局,称为R.layout.widget_show。因此,您在屏幕上看到的内容并不是您将适配器设置为的内容。

您没有收到实际错误的原因是您正在扩展 ListActivity,它定义了包含 ListView 的默认布局。在任何常规 Activity 中,您都会收到 NullPointerException,因为尚未设置内容 View ,因此 Activity 不知道在哪里膨胀 View 来自。

按如下方式更改代码:

@Override protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
// tell activity to use your custom layout:
setContentView(R.layout.widget_show);
// set adapter etc
setListAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, PENS));
getListView().setTextFilterEnabled(true);
}

由于您在布局文件中使用 id @android:id/list 声明了 ListView (这也是使用 ListActivity 的要求) ),您可以免费获得一些方便的方法,其中包括您不必手动膨胀 ListView。因此,您可以在设置内容 View 后使用 getListView()

关于java - Android ListView 不显示数据...这很新,并且肯定我做错了什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14146569/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com