我的 MainActivity 中有一个 ListView,它显示了我正在使用 SimpleCursorAdapter 填充的电影列表。在另一个活动中,用户可以使用 RatingBar 设置评分,并且浮点值保存在数据库中。我想在电影名称旁边的 MainActivity 上显示在其他活动中设置的评分。
我试图将另一个 RatingBar 仅用作指标并进行设置,但它不起作用。我尝试使用五个不可见的图像视图(星星),它们根据浮点值变得可见,但它不起作用。现在我正在尝试使用带有if语句的viewbinder:从数据库中获取评分栏的浮点值,将其解析为Int并将正确的drawable设置为Imageview。
LogCat 中没有错误,但图像视图根本没有改变......也许我在刷新列表时错了?我是一个principiant请帮助我:)我做错了什么??????
//这是我的主要活动:
公共类 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;
}
}