我在MainActivity中有一个ListView,它显示了我用SimpleCursorAdapter填充的电影列表。 在另一个活动中,用户可以使用RatingBar设置评级,并且浮点值保存在数据库中。 我想在电影名称旁边的MainActivity上显示,在其他活动中设置评级。
我尝试仅使用另一个RatingBar作为指标并设置它但它不起作用。 我尝试使用五个不可见的图像视图(星星),根据浮动值变得可见,但它不起作用。 现在我正在尝试使用viewbinder,使用if语句:从数据库中获取评级栏的浮点值,将其解析为Int并将右侧drawable设置为Imageview。
LogCat中没有错误,但imageview根本没有变化...... 也许我刷新清单时错了?我是一位公主,请帮助我:) 我做错了什么???????
//这是我的主要活动:
公共类MainActivity扩展ListActivity实现OnItemClickListener {
public static final int ADD_MANUAL = 1;
private Cursor cursor;
private MoviesHandler db;
private String [] cols = new String [] {MoviesDbConstants.MOVIE_TITLE , MoviesDbConstants.MOVIE_URI};
private int [] views = new int [] { R.id.title , R.id.listImgmovie};
private SimpleCursorAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
db = new MoviesHandler(this);
cursor = db.getAllMovies();
adapter = new SimpleCursorAdapter(this,
R.layout.list, cursor, cols, views, 0);
adapter.setViewBinder(new CustomViewBinder());
ListView lv = getListView();
lv.setAdapter(adapter);
lv.setOnItemClickListener(this);
registerForContextMenu(lv);
}
@Override
protected void onResume() {
super.onResume();
refreshList();
}
private void refreshList() {
cursor = db.getAllMovies();
adapter.changeCursor(cursor);
adapter.notifyDataSetChanged();
}
//这是ViewBinder:
私有类CustomViewBinder实现了ViewBinder {
@Override
public boolean setViewValue(View view, Cursor cursor, int columnIndex) {
if (columnIndex == cursor.getColumnIndex(MoviesDbConstants.MOVIE_RATING)) {
int num = (int) cursor.getFloat(columnIndex);
switch (num){
case 1:
((ImageView) view).setBackgroundResource(R.drawable.one_star);
break;
case 2:
((ImageView) view).setBackgroundResource(R.drawable.two_star);
break;
case 3:
((ImageView) view).setBackgroundResource(R.drawable.three_star);
break;
case 4:
((ImageView) view).setBackgroundResource(R.drawable.four_star);
break;
case 5:
((ImageView) view).setBackgroundResource(R.drawable.five_star);
break;
}
return true;
}
return false;
}
}
答案 0 :(得分:0)
在Android中,您必须与.equals()进行比较,而不是“num == 1”
如果在你的setViewValue()
中,你也应该在这里使用一个开关