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

时间:2011-12-28 23:38:41

标签: android sqlite

我有一个带有“flagname”字段的数据库。我想要做的是在图像视图中显示一个listview,其中包含与数据库字段对应的相关标志,以及文本字段。数据库中的文本字段显示正常,但我在旁边显示相关标记时遇到问题。有人可以让我知道我哪里出错了。我的代码如下:

公共类收藏扩展了活动{

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



}

1 个答案:

答案 0 :(得分:0)

您需要做的是覆盖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);