java.lang.UnsupportedOperationException异常

转载:http://blog.sina.com.cn/s/blog_62ebbfa30100ud5u.html


常常使用Arrays.asLisvt()后调用add,remove这些method时出现java.lang.UnsupportedOperationException异常。这是由于:

Arrays.asLisvt() 返回java.util.Arrays$ArrayList, 而不是ArrayList。Arrays$ArrayList和ArrayList都是继承AbstractList,remove,add等 method在AbstractList中是默认throw UnsupportedOperationException而且不作任何操作。ArrayList override这些method来对list进行操作,但是Arrays$ArrayList没有override remove(int),add(int)等,所以throw UnsupportedOperationException。

解决方法是使用Iterator,或者转换为ArrayList
List list = Arrays.asList(a[]);
List arrayList = new ArrayList(list);


//---------------------------------------------------------以上为转载内容

//---------------------------------------------------------以下是我自己的


   //有个gridview的控件

       userGridview = (ExpandGridView) findViewById(R.id.history_gridview);


  //做一个adapter给gridview赋值;thisgroup.getMembers()是我调用别的地方的方法,返回值为List
        adapter =new GridAdapter(HistoryDetail.this, R.layout.grid,thisgroup.getMembers());


        userGridview.setAdapter(adapter);

  //在程序的某个地方调用clear()时候报错;

      adapter.clear();


报错的大致原因理解为list不能直接clear;要把list,new成ArrayList就ok啦

修改后的代码


        List<String> members = new ArrayList<String>();
        members.addAll(thisgroup.getMembers());

        
        userGridview = (ExpandGridView) findViewById(R.id.history_gridview);
        adapter =new GridAdapter(HistoryDetail.this, R.layout.grid,members);
        userGridview.setAdapter(adapter);



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值