Отображение значка в базе данных с использованием ViewBinder
Я успешно создал таблицу, используя SQlite
в андроид. В базе данных есть колонка для секса (мужской / женский). То, что я хотел бы сделать, это проверить тип пола и отобразить мужской / женский значок в зависимости от типа. я использовал setViewBinder()
который проходит индекс столбца (какой именно столбец я не знаю), но я считаю, что мы можем использовать это для проверки столбца пола. Есть лучший способ сделать это?
ListView lv=(ListView)findViewById(R.id.mylist);
dbh = new DatabaseHelper(this);
c = dbh.getReadableDatabase().rawQuery("SELECT _id, " +
DatabaseHelper.NAME +
", " + DatabaseHelper.LASTNAME +
", " + DatabaseHelper.ans2 + ", " + DatabaseHelper.SEX +
" FROM " +
DatabaseHelper.TABLE_NAME, null); // initializing
String[] dataFrom ={DatabaseHelper.NAME, DatabaseHelper.LASTNAME, DatabaseHelper.ans2, DatabaseHelper.SEX};
int[] dataTo = {R.id.name, R.id.value1, R.id.value2, R.id.icon};
SimpleCursorAdapter adapter = new SimpleCursorAdapter(this,
R.layout.row, c, dataFrom, dataTo);
adapter.setViewBinder(new ViewBinder(){
public boolean setViewValue(View view, Cursor cursor,
int columnIndex) {
if (view.getId() == R.id.icon) {
int sex = cursor.getInt(columnIndex);
String s = String.valueOf(sex);
if (s == "male") {
((ImageView) view).setImageResource(R.drawable.male);
} else if (s == "female"){
((ImageView) view).setImageResource(R.drawable.female);
}
return true;
} else {
return false;
}
}
});
lv.setAdapter(adapter);
2 ответа
Решение
Метод bindView позволяет легко устанавливать / проверять ваши данные, потому что вы получаете:
- ваш курсор расположен в фактической позиции
- вид, в котором вы можете разместить свои данные