mat*_*boy 17 android android-listview
我正在尝试使用全新的ArrayList更新ListView.对于API 11,使用addAll(...)方法可以很好地工作,但是这不适用于早期的API.我无法弄清楚如何为旧版本更新这样的整个列表.
ArrayAdapter<String> textList = new ArrayAdapter<String>(listener, R.layout.list_item, stringList);
listener.setListAdapter(textList);
Run Code Online (Sandbox Code Playgroud)
然后......
textList.clear();
textList.addAll(stringList); <--- works fine for Android 3.0 (API Level 11) and beyond, but not before.
Run Code Online (Sandbox Code Playgroud)
在API 11中引入addAll()之前,你是如何做到这一点的?谢谢.
Sea*_*eau 19
以下是使用SDK_INT> = 11的Android设备的原生addAll()的完整代码块,并对API级别小于11的设备使用循环解决方法.
@TargetApi(11)
public void setData(List<String> data) {
clear();
if (data != null) {
//If the platform supports it, use addAll, otherwise add in loop
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
addAll(data);
} else {
for(String item: data) {
add(item);
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
@TargetApi(11)当您<uses-sdk android:minSdkVersion="X"/>在AndroidManifest.xml中有一个X小于11 时,注释与ADT 17一起用于抑制Lint警告.有关详细信息,请参阅http://tools.android.com/recent/lintapicheck.
yor*_*rkw 11
最简单的方法是避免在循环中使用ArrayAdapter.addAll()和ArrayAdapter.add(),就像他的回答中提到的idiottiger一样.
如果你坚持使用ArrayAdapter.addAll(),简短的回答就是DIY.在这里查看android.widget.ArrayAdapter的来源,实际的实现比你想象的要简单得多.有很多替代方法可以实现这一目标,例如:
选项1是首选并且非常常用,尤其是在需要在ListView中呈现更复杂的自定义UI内容的情况下.
| 归档时间: |
|
| 查看次数: |
20970 次 |
| 最近记录: |