gpt4 book ai didi

Android 如何使用简单光标适配器/自定义光标适配器从数据库加载数据并将文本和图像放在一行中

转载 作者:行者123 更新时间:2023-11-30 03:08:52 26 4
gpt4 key购买 nike

我正在尝试在 Android 中使用带有 TextView 和 ImageView 的行自定义列表。

有:三个 TextView (TextViewPurpose、TextViewStart、TextViewInfo)我可以直接从数据库中获取(purpose、start、info)

另外两个textviews (TextViewCO2, TextViewCalory)我需要根据数据库中的值进行计算(我想根据距离计算CO2和Calory,这也在数据库中)

以及基于两个值的 ImageView (ImageTripPurpose)(如果没有上传,我使用图像。如果上传,图像将基于目的)。

现有代码仅将三个 TextView 放入行中。

Cursor allTrips = mDb.fetchAllTrips();
SimpleCursorAdapter sca = new SimpleCursorAdapter(getActivity(),
R.layout.saved_trips_list_item, allTrips, new String[] {
"purp", "start", "info" }, new int[] {
R.id.TextViewPurpose, R.id.TextViewStart, R.id.TextInfo });
lv.setAdapter(sca);

当我只是想在每一行上放一张图片时,我使用了它,但它不起作用。

sca.setViewBinder(new SimpleCursorAdapter.ViewBinder(){
/** Binds the Cursor column defined by the specified index to the specified view */
public boolean setViewValue(View view, Cursor cursor, int columnIndex){
if(view.getId() == R.id.icon){
((ImageView)view).setImageResource(R.drawable.commute);
return true; //true because the data was bound to the view
}
return false;
}
});

另外,据说不鼓励使用 SimpleCursor Adapter,因为加载数据会延迟。建议使用 LoaderManager 和 CursorLoader。我应该怎么做才能解决这些问题?

最佳答案

这是一个如何完成的例子。抱歉有些打错了,它是从 ipad 打出来的..只是给你一个想法。

          class MyFragment extends ListFragment {

private CursorAdapter mAdapter;

public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

String[] from = new String[] { "purp", "start", "info" };
int[] to = new int[] {R.id.TextViewPurpose, R.id.TextViewStart, R.id.TextInfo };
mAdapter = MyCursorAdapter(getActivity(),
R.layout.saved_trips_list_item, allTrips,
null,
from ,
to,
CursorAdapter.FLAG_REGISTER_CONTENT_OBSERV);
}

public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
new AsyncTask<Void, Void, Cursor>() {
protected Long doInBackground(Void... voids) {
return mDb.fetchAllTrips();
}

protected void onPostExecute(Cursor result) {
mAdapter.changeCursor(result);
}
}.execute();

}

public static class MyCursorAdapter extends SimpleCursorAdapter {
MyCursorAdapter(Context context, int layout, Cursor c, String[] from, int[] to, int flags) {
super(context, layout, c, from, to, flags)
}

public bindView(View view, Context context, Cursor cursor) {
ImageView imageView = (ImageView) view.findById(R.id.imageView);
imageView.setImageResource(R.drawable.commute);
}
}

}

关于Android 如何使用简单光标适配器/自定义光标适配器从数据库加载数据并将文本和图像放在一行中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21320331/

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