我已成功使用 SimpleCursorAdapter 列出显示名称和值(都在我的数据库中)并将它们显示在我的列表活动中。
我现在要做的是为列表活动中的每个项目添加一个新视图(ImageView)。它应该最终看起来像这样。
Image_1_NotInDB -- DisplayName1FromDB -- DisplayName1FromDB
Image_2_NotInDB -- DisplayName2FromDB -- DisplayName2FromDB.
图像将不同(基于 DisplayName1FromDB)。我认为 SimpleCursorAdapter 不再适合这个目的。
我尝试创建一个 customSimpleCursorAdapter 扩展 SimpleCursorAdapter 并尝试使用 'newView' 和 'bindView' 方法来实现。我几乎遵循了这个:自定义 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 是答案吗?如果是,您能否分享您将传递给它的参数?