gpt4 book ai didi

java - Android:将简单的光标链接到 ListView

转载 作者:行者123 更新时间:2023-12-01 15:11:42 26 4
gpt4 key购买 nike

我已经掌握了如何从 sqlite 数据库获取数据的基本前提,并且我已经掌握了它来记录返回到 logcat 的项目。但是,我似乎无法找出将该数据输出到 ListView 的最佳方法。

起初我以为我会将数据放入一个数组中,并使用该数组设置一个 ListView ,但是通过环顾四周,您可以将光标直接作为数据源链接到 ListView ,但我不太明白我的意思绕过它。

这是我的 MainActivity(一旦我完成了更多工作,我会将 sql 放入它自己的帮助器类中,但现在它全部来自主 Activity )

我的主要 Activity 是:

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>

我的表有三列,但现在我很高兴它只是将数据库中的所有名字喷出到 ListView

汤姆

最佳答案

看来您还没有在 ListView 中编写任何行,由于您的贡献较弱,您的问题不应该得到回答。无论如何,这是答案的演示代码(并不完全满足您的所有要求):

(1) 创建 list_view_item.xml 以在 ListView 中显示您的信息,例如:a 显示您的数据字段。

(2) 创建 DataBoundAdapter 以绑定(bind)到数据库游标的结果:

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);

关于java - Android:将简单的光标链接到 ListView ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12263095/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com