安卓中使用ArrayAdapter中的remove方法注意事项
2016-09-25 09:44
429 查看
我们可以使用ArrayAdapter实现简单的文本数据的展示等,同时ArrayAdapter也实现了remove方法,方便我们删除listview中的某一项数据,但在进行删除操作的时候可能会遇到些许问题,如当我们在ArrayAdapter的构造方法中传入数组类型的数据时会报如下异常:
我们查看一下其构造方法源码
我们可以看到源码中是把数组通过Arrays.asList(objects)方法转换为list的,但java中通过这种方法转换的list是无法进行add或remove的,所以为出现上面的异常。
如果我们想使用ArrayAdapter的remove方法可以把数据转换为list,调用ArrayAdapter的ArrayAdapter(Context context, int resource, List<T> objects)构造方法。
另外
我们再看一下remove方法的源码
在代码最后调用了notifyDataSetChanged()方法,实现了listview数据的刷新。
我们查看一下其构造方法源码
public ArrayAdapter(Context context, int resource, T[] objects) { init(context, resource, 0, Arrays.asList(objects)); }
我们可以看到源码中是把数组通过Arrays.asList(objects)方法转换为list的,但java中通过这种方法转换的list是无法进行add或remove的,所以为出现上面的异常。
如果我们想使用ArrayAdapter的remove方法可以把数据转换为list,调用ArrayAdapter的ArrayAdapter(Context context, int resource, List<T> objects)构造方法。
另外
我们再看一下remove方法的源码
public void remove(T object) { synchronized (mLock) { if (mOriginalValues != null) { mOriginalValues.remove(object); } else { mObjects.remove(object); } } if (mNotifyOnChange) notifyDataSetChanged(); }
在代码最后调用了notifyDataSetChanged()方法,实现了listview数据的刷新。
相关文章推荐
- JavaScript中的new的使用方法与注意事项
- C++ typename 关键字的使用方法和注意事项
- 使用ResultSet的geRow()方法的注意事项
- iPhone SDK中多线程的使用方法以及注意事项
- Java String的常用方法及使用注意事项
- CTE的使用方法和注意事项
- ruby中字符串的转码 使用方法以及注意事项
- C++中typename关键字的使用方法和注意事项
- cvFloodFill的使用方法和注意事项。
- Android使用Parcelable传递对象方法及注意事项
- imageVue相册Sitemenu插件使用方法及注意事项
- ScrolledComposite使用方法及注意事项
- 分页解决方案 之 分页算法——Pager_SQL的详细使用方法和注意事项
- iPhone SDK中多线程的使用方法以及注意事项
- C++中typename关键字的使用方法和注意事项
- 使用SPView时的注意事项和问题,及解决方法?
- Java基础:String类之常用方法及使用注意事项
- SharePoint中使用SilverLight的注意事项及SilverLight显示空白的解决方法
- 软件开发SVN的使用方法和注意事项
- .NET中lock的使用方法及注意事项