我正在使用SherlockListActivity和ListView。 当列表中没有项目时,我想显示no_data字符串。 我使用@android:id / empty跟随了几个例子,但它们对我不起作用。 “空”文本视图永远不可见。任何帮助表示赞赏。 这是我的layout.xml:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="wrap_content" >
<ListView android:id="@android:id/list"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<TextView android:id="@android:id/empty"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/no_data"/>
</LinearLayout>
这是我的列表视图填充在我的MainActivity Java文件
中的方式private void fillData()
{
// Get cursor of name, bal, date for account list
Cursor cursor = db.getCursor();
startManagingCursor(cursor);
// THE DESIRED COLUMNS TO BE BOUND
String[] columns = new String[] { "accounts.name", "accounts.bal", "accounts.ot"};
// THE XML DEFINED VIEWS WHICH THE DATA WILL BE BOUND TO
int[] to = new int[] { R.id.tvName,R.id.tvBal, R.id.tvDate };
// CREATE THE ADAPTER USING THE CURSOR POINTING TO THE DESIRED DATA AS WELL AS THE LAYOUT INFORMATION
SimpleCursorAdapter mAdapter = new SimpleCursorAdapter(this, R.layout.main_list_item, cursor, columns, to);
// SET THIS ADAPTER AS YOUR LISTACTIVITY'S ADAPTER
this.setListAdapter(mAdapter);
}
这是我在单独的Java类
中创建Cursor的方法 // Getting All accounts
public Cursor getCursor() {
SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor = db.query(TABLE_ACCOUNTS, new String[] {
KEY_AID, // Account ID Integer
KEY_NAME, // Name of account
KEY_BAL, // Balance
KEY_ADATE, // Occurrence time
},
KEY_TYPE + "=?",
new String[] {"2"}, null, null, null);
// return account list
return cursor;
答案 0 :(得分:0)
我需要在ListActivity的OnCreate方法中添加以下内容。
setContentView(R.layout.activity_main);
我通过回到记事本示例并将其与我的项目进行比较来找到这一点。 即使我忘了设置layout.xml,listview本身仍然有效。我相信这是因为默认的ListActivity布局是一个列表视图,其id为android:id / list。 现在正在使用正确的layout.xml,id为@android:id / empty的文本视图也正常工作。 抱歉,因为当我发布问题时,我没有包含MainActivity的OnCreate方法,而这就是问题所在。