[英]Android: ListActivity does not display any Item
希望您能幫我解決這個問題。 我的ListActivity類將在列表中顯示ant項目
這是我的代碼:
import android.os.Bundle;
import android.provider.BaseColumns;
import android.app.Activity;
import android.app.ListActivity;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.CursorAdapter;
import android.widget.EditText;
import android.widget.SimpleCursorAdapter;
import android.support.v4.app.NavUtils;
public class Sale2 extends ListActivity {
private static final int DIALOG_ID = 100;
private SQLiteDatabase database;
DBAdapter db;
private CursorAdapter dataSource;
private View entryView;
private EditText firstNameEditor;
private EditText lastNameEditor;
private static final String fields[] = { "_id", "_date", "_soldPrice" };
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
try {
db = new DBAdapter(this);
db.open();
Cursor data = db.getAllSales2();
System.out.println("after getallsales2");
dataSource = new SimpleCursorAdapter(this, R.layout.row, data,
fields, new int[] { R.id._id, R.id.first, R.id.last });
System.out.println("after simplecursoradapter"
+ dataSource.toString());
setListAdapter(dataSource);
System.out.println("setListAdapter");
} catch (Exception e) {
Log.e("ERROR", "ERROR IN CODE: " + e.toString());
e.printStackTrace();
}
}
}
這是row.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<TextView
android:id="@+id/_id"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<TextView
android:id="@+id/first"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<TextView
android:id="@+id/last"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
筆記:
確保游標上有一些數據。 但是它不會顯示它們
感謝幫助
您錯過了對setContentView(View)的調用,該調用包含一個listview,應該使用Cursor中的數據填充該listview
嘗試這個:
public class Sale2 extends ListActivity {
private static final int DIALOG_ID = 100;
private SQLiteDatabase database;
DBAdapter db;
private ListAdapter dataSource;
private View entryView;
private EditText firstNameEditor;
private EditText lastNameEditor;
private static final String fields[] = { "_id", "_date", "_soldPrice" };
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
try {
db = new DBAdapter(this);
db.open();
Cursor data = db.getAllSales2();
System.out.println("after getallsales2");
startManagingCursor(data);
dataSource = new SimpleCursorAdapter(this, R.layout.row, data,
fields, new int[] { R.id._id, R.id.first, R.id.last });
System.out.println("after simplecursoradapter"
+ dataSource.toString());
setListAdapter(dataSource);
System.out.println("setListAdapter");
} catch (Exception e) {
Log.e("ERROR", "ERROR IN CODE: " + e.toString());
e.printStackTrace();
}
}
}
我已經將dataSource更改為ListAdapter
,還添加了startManagingCursor
。
另請參閱此處的示例
http://developer.android.com/reference/android/app/ListActivity.html
您忘記了使用對ListView的引用,但是由於擴展了ListActivity而不是Activity,因此必須按如下方式獲取對ListActivity的List的引用:
ListView lv =
getListView();
我認為您需要在從xml加載的列表對象上設置適配器。 就像是:
listaNodiView = (ListView) findViewById(R.id.ListViewLista);
listaNodiView.setListAdapter(dataSource);
其中R.id.ListViewLista
是布局xml聲明內的List資源的ID(不是row.xml)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.