java Android ListView未显示数据。。。在这方面我是个新手,肯定我做错了什么
这是我的第二个应用程序,也是第一个使用ListActivity的应用程序。某个地方出现了一些问题—活动(ShowWidget)显示—但列表为空
以下是我的ListActivity代码:
import 安卓.app.ListActivity;
import 安卓.media.MediaPlayer;
import 安卓.os.Bundle;
import 安卓.view.View;
import 安卓.widget.ArrayAdapter;
import 安卓.widget.ListView;
import 安卓.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(安卓.R.id.list);
setListAdapter(new ArrayAdapter<String>(this, 安卓.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:安卓="http://schemas.安卓.com/apk/res/安卓"
安卓:layout_width="fill_parent"
安卓:layout_height="fill_parent"
安卓:id="@+id/widgetShow">
<ListView
安卓:layout_width="0dp"
安卓:layout_height="0dp"
安卓:id="@安卓:id/list"
安卓:layout_weight="1">
</ListView>
</LinearLayout>
就像我说的,我在这里做错了什么-活动显示,但不是笔中存储的数据。任何正确方向的想法或观点都将不胜感激!如果问题不清楚,请评论,我将编辑问题以使其更清楚
# 1 楼答案
这是处理UI组件的顺序。首先,从默认布局(导入以实现)膨胀
ListView
,然后,基本上告诉Activity
使用其他布局,称为R.layout.widget_show
。因此,您在屏幕上看到的并不是您将适配器设置为的内容没有得到实际错误的原因是您正在扩展
ListActivity
,它定义了一个包含ListView
的默认布局。在任何常规的Activity
中,您都会得到一个NullPointerException
,因为还没有设置内容视图,所以Activity
不知道从何处膨胀视图按如下方式更改代码:
由于您在布局文件中用id
@android:id/list
声明了ListView
(这也是使用ListActivity
的一个要求),因此可以免费获得一些方便的方法,其中包括您不必手动膨胀ListView
。因此,您可以在设置内容视图后使用getListView()
# 2 楼答案
尝试更改:
致:
# 3 楼答案
尝试按如下方式编辑布局文件: