我已经获得了如何从sqlite数据库获取数据的基本前提,并且我已经让它记录返回到logcat的项目。但是,我似乎无法找到将数据输出到列表视图的最佳方法。
起初我以为我会把数据放到一个数组中,并使用该数组设置一个listview,但是从周围看你可以直接将Cursor作为数据源链接到listview但是我不能完全得到我的绕过它。
这是我的MainActivity(一旦我完成了更多的工作,我会把sql放到它自己的帮助类中,但是现在它都来自主要的活动)
我的主要活动是:
public class MainActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
SQLiteDatabase db = openOrCreateDatabase("MyDB", MODE_PRIVATE, null);
Cursor c = db.rawQuery("SELECT * FROM MyTable", null);
c.moveToFirst();
Log.e("TomDebug", c.getString(c.getColumnIndex("FirstName")));
db.close();
}
}
我的布局activiy_main.xml是:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="fill" >
<ListView
android:id="@+id/derooms"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true" >
</ListView>
</RelativeLayout>
我的表有三列,但是现在我很满意它只是将数据库中的所有FirstNames喷出到列表视图
汤姆
答案 0 :(得分:1)
您似乎没有为列表视图编写任何行,因为您的贡献不足,您的问题不应该被回答。无论如何,这里是答案的演示代码(不是exaclty满足您的所有要求):
(1)创建list_view_item.xml
以在列表视图中显示您的信息,例如:a显示您的数据字段。
(2)创建DataBoundAdapter
以绑定到您的DB游标结果:
public class DataBoundAdapter extends CursorAdapter
{
Context _context;
public DataBoundAdapter(Context context, Cursor c, boolean autoRequery) {
super(context, c, autoRequery);
_context = context;
}
@Override
public void bindView(View view, Context c, Cursor cur)
{
// TODO: handle data when binding to your list view
}
@Override
public View newView(Context context, Cursor cursor, ViewGroup parent)
{
int item_view_id = R.layout.list_view_item;
//inflate item view to list view holder
LinearLayout holderView = new LinearLayout(_context);
String inflaterName = Context.LAYOUT_INFLATER_SERVICE;
LayoutInflater inflater = (LayoutInflater) _context.getSystemService(inflaterName);
inflater.inflate(item_view_id, holderView, true);
return holderView;
}
}
(3)在MainActivity.onCreate(..)
:
ListView myListView = (ListView)findViewById(R.id.derooms);
DataBoundAdapter dbAdapter = new DataBoundAdapter(this, your_db_cursor, true);
myListView.setAdapter(dbAdapter);
答案 1 :(得分:0)
您需要一个CursorAdapter。见http://developer.android.com/reference/android/widget/CursorAdapter.html
您可以使用SimpleCursorAdapter开始。如果您的目标是11岁以上,那么您需要查看http://developer.android.com/reference/android/content/CursorLoader.html