我希望你帮我解决这个问题。我的ListActivity类woudlnt在列表中显示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>
注意:
我确定光标上有一些数据。但它不会显示它们
感谢帮助
答案 0 :(得分:1)
你缺少对setContentView(View)的调用,它包含一个listview,应该使用Cursor中的数据填充
答案 1 :(得分:0)
试试这个:
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
答案 2 :(得分:0)
您忘记使用对ListView的引用,但由于您已扩展ListActivity而不是Activity,因此您必须获得对ListActivity列表的引用,如下所示:
ListView lv =
getListView();
答案 3 :(得分:-1)
我认为您需要在从xml加载的列表对象上设置适配器。类似的东西:
listaNodiView = (ListView) findViewById(R.id.ListViewLista);
listaNodiView.setListAdapter(dataSource);
其中R.id.ListViewLista
是布局xml声明(NOT row.xml)中List资源的id