gpt4 book ai didi

android - 使用 ViewBinder 更新 `ListView` 行中的图像

转载 作者:搜寻专家 更新时间:2023-11-01 09:09:17 26 4
gpt4 key购买 nike

我有一个从 SimpleCursorAdapter 填充的 ListView,每行包含一些 TextViews 和一个 ImageView。我想根据某些值更改每一行的 ImageView,但是我试图首先弄清楚如何在填充列表后更新列表中的 ImageView。我试过这段代码,但 ImageView 保持不变:

cursorAdapter.setViewBinder(new SimpleCursorAdapter.ViewBinder() {
public boolean setViewValue(View view, Cursor cursor, int columnIndex) {
int viewId = view.getId();
Log.v("ViewBinder", "columnIndex=" + columnIndex + " viewId = " + viewId);
if(viewId == R.id.imageloc)
{
sign2 = (ImageView) view;
sign2.setImageResource(R.drawable.other);

return true;
}
return false;
}
});

如果有人能帮助我,我将不胜感激!

最佳答案

如果您只想根据某些值更新 ImageView,如果这些值存储在数据库中,您可以像这样执行 SQL 查询:

SELECT _id, name, CASE WHEN checked = 1 THEN 'R.drawable.check' ELSE 'R.drawable.check' END as img FROM table;

以这种方式,您将不需要使用 setViewBinder() 方法。只需执行查询、获取游标、将其分配给 SimpleCursorAdapter 并将适配器分配给 ListView 。

Cursor c = mDbHelper.fetchData(sqlQuery);
(...)
String[] from = new String[]{"name", "img"};
int[] to = new int[]{R.id.text_view, R.id.imgageloc};
SimpleCursorAdapter _adapter = new SimpleCursorAdapter(this, R.layout.data_rows, c, from, to);
setListAdapter (_adapter);

Note: you'll need the integer value of R.drawable.check/R.drawable.check : " ... THEN '" + R.drawable.check + "' ELSE ..."

希望它对您有所帮助,并且正是您所需要的。

关于android - 使用 ViewBinder 更新 `ListView` 行中的图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9507524/

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