我有一个 ListView,其中填充了新闻服务器概要(只是故事列表)和一个用于修改该 ListView 的 arrayAdapter。
我可以通过“remove(Object)”函数删除项目,但是如果有多个“Object”实例怎么办? remove() 仅删除了“Object”的第一个实例。例如,我无法在不删除第一个“对象”的情况下删除阵列适配器中的第二个“对象”。所以我的问题是我该如何解决这个问题?
例如:纲要 A
story 1
story 2
Break
story 3
story 4
Break
story 5
etc...
所以在这个例子中我无法删除第二个“Break”,因为remove('Break')将删除第一个。如果我可以删除ByIndex(5),那将是完美的,但是......
我尝试编写自己的删除函数,该函数创建一个包含除指定索引之外的所有成员的全新适配器。这就是我正在搞乱的。
public ArrayAdapter<String> removeIndex(ArrayAdapter<String> arr, int index) {
ArrayAdapter<String> temp = new ArrayAdapter<String>(arr.getContext(),R.layout.list_item);
for(int i =0 ; i<arr.getCount();i++){
if(i != index) temp.add(arr.getItem(i));
}
return temp;
}
感谢帮助或建议。
使用 List 自行处理字符串集合,并将对象传递到 ArrayAdapter 的构造函数中。这将为您提供对列表的引用,以便您可以更改数据,同时允许适配器根据需要进行管理和显示。
Note:修改数据对象时必须调用
myAdapter.notifyDataSetChanged()
之后 - 也必须在 UI 线程上。显然,对列表的更改不必在 UI 线程上进行,并且很可能应该发生not发生在 UI 线程上。
private ArrayList<String> mData = new ArrayList<String>();
private ArrayAdapter<String> mAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
// ...
// Code that adds the strings
// Create the list adapter
mAdapter = new ArrayAdapter<String>(myActivity.this, android.R.layout.simple_list_item_1, mData);
}
private void removeItem(int index) {
mData.removeAt(index);
myActivity.this.runOnUiThread(new Runnable() {
public void run() {
mAdapter.notifyDataSetChanged();
}
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)