1

我的 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;
        }
    }
4

1 回答 1

0

在 Android 中,您必须与 .equals() 进行比较,而不是“num == 1”

如果在你的 setViewValue() 中,你也应该在这里使用一个开关而不是这么多

于 2013-05-21T09:50:03.973 回答