2

我从 aListView填充了一个SimpleCursorAdapter,每行包含一些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;      
          } 
        });

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

4

3 回答 3

2

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

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

以这种方式执行此操作,您将不需要使用 setViewBinder() 方法。只需执行查询,获取光标,将其分配给 SimpleCursorAdapter 并将适配器分配给列表视图。

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

注意:您需要 R.drawable.check/R.drawable.check 的整数值:" ... THEN '" + R.drawable.check + "' ELSE ..."

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

于 2012-10-30T17:42:21.693 回答
1

尝试

sign2.setBackgroundResource(R.drawable.other);

在非常相似的情况下为我工作,我试图基于if statement.

于 2013-02-06T06:07:32.173 回答
0

我看不到您尝试在哪里为 ImageView 设置不同的资源。它总是 R.drawable.other。根据您的光标数据更改图像资源。

于 2012-02-29T22:38:47.987 回答