我已成功使用SimpleCursorAdapter列出displayname和value(在我的数据库中)并在列表活动中显示它们。
我现在要做的是为列表活动中的每个项目添加一个新视图(ImageView)。它应该最终看起来像这样。
Image_1_NotInDB -- DisplayName1FromDB -- DisplayName1FromDB
Image_2_NotInDB -- DisplayName2FromDB -- DisplayName2FromDB.
图像会有所不同(基于DisplayName1FromDB)。我认为SimpleCursorAdapter不再适用于此目的。
我尝试创建一个扩展SimpleCursorAdapter的customSimpleCursorAdapter,并尝试使用'newView'和'bindView'方法来实现。我几乎遵循这个:Custom CursorAdapters。
问题是;我使用的是基于DB的值(我打算在构造函数或customSimpleCursorAdapter中传递)
public View newView(Context pContext, Cursor pCursor, ViewGroup pParent)
{
Cursor lCursor = getCursor();
final LayoutInflater inflater = LayoutInflater.from(pContext);
View lView = inflater.inflate(layout, pParent, false);
int lImage = "dog".equals(variable) ? R.drawable.dog : R.drawable.cat;
// "variable" is a member variable (set at the constructor)
ImageView lImageView = (ImageView) lView.findViewById(R.id.appImage);
if (lImageView != null)
{
lImageView.setImageResource(lImage);
}
return pParent;
}
public void bindView(View pView, Context pContext, Cursor pCursor)
{
int lImage = "dog".equals(variable) ? R.drawable.dog : R.drawable.cat;
// "variable" is a member variable (set at the constructor)
ImageView lImageView = (ImageView) lView.findViewById(R.id.appImage);
if (lImageView != null)
{
lImageView.setImageResource(lImage);
}
}
这是我尝试使用“customSimpleCursorAdapter”
的方法 String[] lDisplay = new String[] {KEY_NAME, KEY_TIME};
int[] lValues = new int[] {R.id.name, R.id.time};
CustomRowCursorAdapter lCursorAdapter = new CustomRowCursorAdapter(this, R.layout.row, lSTime, lDisplay, lValues, "MY IDEA WAS TO PASS THE ANIMAL NAME HERE, BUT NOT LUCK as I am not sure How ");
lCursorAdapter.newView(this, lSTime, getListView());
lCursorAdapter.bindView(getListView(), this, lSTime);
setListAdapter(lCursorAdapter);
ArrayAdapter是答案吗?如果是,您可以分享您传递给它的参数吗?
答案 0 :(得分:1)
我建议使用自定义适配器
答案 1 :(得分:0)
ArrayAdapter是答案吗?
不,你不能在这里使用ArrayAdapter
。因为您需要显示数据库中的数据,所以您必须在此处使用自定义CursorAdapter
。
答案 2 :(得分:0)
您可以从数据库向投影添加其他字段。
以下是我用于根据商品价格(以美分存储)和相关单位格式化成本的投影示例。
public static final String CONCATE_COST
= "'$' || CASE WHEN SUBSTR(ROUND("+COLUMN_PRICE
+"/100.0, 2), LENGTH(ROUND("+COLUMN_PRICE
+"/100.0, 2))-1, 1)='.' THEN ROUND("+COLUMN_PRICE
+"/100.0, 2) || '0' else ROUND("+COLUMN_PRICE
+"/100.0, 2) end || "+COLUMN_UNIT;
将其用作列,您可以使用column
到R.id.*
的法线贴图将其与视图中的字段配对。