在listview中显示来自sqlite数据库的标志图像



我有一个数据库的"flagname"字段。我想做的是显示一个listview与相关的标志在图像视图,对应于数据库字段,旁边的文本字段。从数据库的文本字段正在显示ok,但我有麻烦显示旁边的相关标志。谁能告诉我我哪里做错了吗?我的代码如下所示:

公共类favorites扩展Activity{

Cursor cursor;
ListView lv;
ImageView iv;
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.listmain);  
    iv = (ImageView)findViewById(R.id.imgFlag);

    DBAdapter db = new DBAdapter(this);
    db.open();
    lv = (ListView)findViewById(R.id.list);
    //Get cursor for list items
    cursor = db.getAllRadioStations();
    //assign fields to columns
    String[] columns = new String[]{DBAdapter.KEY_STATION_NAME.toString()};
    int[] to = new int[]{R.id.txtFlag};
    startManagingCursor(cursor);
    SimpleCursorAdapter adapter = new SimpleCursorAdapter(this, R.layout.flagchoice, cursor, columns, to);
    lv.setAdapter(adapter);
    lv.setChoiceMode(ListView.CHOICE_MODE_SINGLE);

}

你需要做的是重写Adapter.setViewBinder()。试试这个:

SimpleCursorAdapter adapter = new SimpleCursorAdapter(this, R.layout.flagchoice, cursor, columns, to);
adapter.setViewBinder(new ViewBinder() {
public boolean setViewValue(View aView, Cursor aCursor, int aColumnIndex) {
String country=aCursor.getString(aColumnIndex);
int id = getResources().getIdentifier("yourpackagename:drawable/" + country , null, null);
iv = (ImageView)findViewById(R.id.imgFlag);
iv.setImageDrawable(getResources().getDrawable(id));
TextView tv=(TextView) aView;
tv.setText(aCursor.getString(aColumnIndex));
return true;
}
});
lv.setAdapter(adapter);

最新更新