今天做任务的时候遇到个问题
想实现一个点击item 删除item(看到这里一想so easy) 结果报错
之后找了找问题的所在
原因就是我 初始化list的时候 用的是 Arrays.asList
private List<String> indicatorList = Arrays.asList("中国很行", "中国很行", "中国很行", "中国很行", "中国很行");
改成 list.add()这种形式就好了
这个问题会报异常java.lang.UnsupportedOperationException 这是什么异常没见过 根据语义这应该是不支持操作异常
怎么就不支持操作了呢(不让我操作也许就是这个方法用不了)
为什么会这样?
看了一下源码:
通过有道词典看了一下方法的使用说明(也就是注释 写程序要写注释呀 本人也不怎么写注释)
注意上面的这句话 此方法还提供了一种创建创建固定大小的方便方法(原因就在这)
固定大小(固定了大小 也就没有增加和删除操作了 add方法不好使了 remove也不好用了 这也就变成了数组)
所以最后我把这个改了改成add方法初始化数据了
companyList=new ArrayList<>();
companyList.add("中国很行");
companyList.add("中国很行");
companyList.add("中国很行");
companyList.add("中国很行");
companyList.add("中国很行");
companyList.add("中国很行");
companyList.add("中国很行");
companyList.add("中国很行");
companyAdapter=new CommonAdapter(getContext(),R.layout.item_fragment02_dialog_string,companyList) {
@Override
protected void convert(final ViewHolder holder, Object o, final int position) {
holder.setText(R.id.tv_name, companyList.get(position));
holder.getView(R.id.lin_del).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
companyList.remove(holder.getAdapterPosition());
notifyItemRemoved(holder.getAdapterPosition());//这种方法有个删除的效果 哈哈很好
if(companyList.size()==0){
text.setVisibility(View.VISIBLE);
}
}
});
holder.getView(R.id.tv_name).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(getContext(), Fragment03Activity.class);
startActivity(intent);
}
});
}
};