尝试将adapter.getView Binder转换为适配器的重写方法中的getview方法

时间:2014-01-20 16:26:35

标签: android listview simplecursoradapter

所以我有一个功能:

  adapter =new SimpleCursorAdapter(this,R.layout.rating,cu,new String[]{"Title","Fav"}, new int[]{R.id.text1,R.id.bt_rating},CursorAdapter.FLAG_REGISTER_CONTENT_OBSERVER);   
      //added in last update
        adapter.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.bt_rating){
                    String favorites=cursor.getString(cursor.getColumnIndex("Fav")).toString();                     
                    if(favorites.equals("Filled"))
                    {

                        ((CheckBox)view).setChecked(true);
                    }
                    else
                    {                       

                        ((CheckBox)view).setChecked(false); 
                    }
                    ((CheckBox)view).setTag(cursor.getInt(cursor.getColumnIndex("_id"))); 
                    //((CheckBox)view).setOnCheckedChangeListener(myCheckChangList);
                    return true; //true because the data was bound to the view
                }

                return false;
            }

            });

因为我有一个带有复选框按钮和textview的列表视图所以我告诉viewbinder检查复选框值是否已填充(在数据库中的fav列中)然后它应该选中复选框并将其设置为标签以便我以后可以调用它并在它上面工作,如果它是空的,它将保持复选框未选中..这工作正常,但由于我需要对数据做其他工作,我试图创建我自己的simplecursor适配器...和ovveride getview()方法并将之前的工作转换为public View getView(int arg0,View view,ViewGroup vg)函数,但不知道该怎么做..

1 个答案:

答案 0 :(得分:0)

我看到了这个教程,这太棒了:

https://dl.google.com/googleio/2010/android-world-of-listview-android.pdf

有了这些信息,我完成了我的任务。