【错误笔记——Android】java.lang.IllegalStateException

这个问题是我给ListView绑定数据的时候出现的,根据docs显示说,如果找不到绑定的组件就会出现这个错误。

当需要手动绑定数据的时候会重写

public boolean setViewValue(View view, Object data,String textRepresentation)

这个方法会默认返回一个false.

当返回false的时候,系统除了会执行用户设置的绑定形式外,还是继续执行原来的设定进行绑定。

当返回true的时候,系统将仅根据用户的设置来进行数据绑定。

我想把获取的值绑定到RatingBar上于是设置了如下的绑定

if (view instanceof RatingBar) {
  RatingBar star = (RatingBar) view;
  star.setActivated(false);
  star.setRating((int) data);
}

可是我返回值没有修改,还是默认的false,于是系统就继续按照原来的设定来绑定数据。

可是原来的设定中并没有为RatingBar绑定数据的方法,于是就报IllegalStateException错误。

然而如果把返回值为true,程序将不再进行其他的数据绑定,我的ListView里还有的TextView就不会有值。我的解决方法是,干脆全部都手动设置绑定,然后返回true。

            if (view instanceof RatingBar) {
                RatingBar star = (RatingBar) view;
                star.setActivated(false);
                star.setRating((int) data);
            
            } else if (view.getId() == R.id.txtTitle) {
                ((TextView) view).setText((String) data);
            } else if (view.getId() == R.id.text) {
                ((TextView) view).setText((String) data);
            } 

然后就解决了问题。

不知道有没有其他更好的方法,请高手指点。

posted @ 2014-04-19 15:37  cirno_9  阅读(535)  评论(0)    收藏  举报