gpt4 book ai didi

java - 数组适配器 : Remove by Index

转载 作者:搜寻专家 更新时间:2023-11-01 09:12:53 25 4
gpt4 key购买 nike

我有一个 ListView,它由一个新闻服务器摘要(只是一个故事 fragment 列表)和一个用于修改该 ListView 的 arrayAdapter 填充。

我可以通过“remove(Object)”函数删除项目,但是如果有多个“Object”实例怎么办? remove() 只删除了“对象”的第一个实例。例如,我无法在不删除第一个对象的情况下删除我的阵列适配器中的第二个“对象”。所以我的问题是我该如何解决这个问题?

例如:纲要 A

story 1 
story 2
Break
story 3
story 4
Break
story 5
etc...

所以在这个例子中我不能删除第二个'Break',因为remove('Break') 会删除第一个。如果我可以 removeByIndex(5),那将是完美的,但是......

我尝试编写自己的 remove 函数来创建一个全新的适配器,其中包含除指定索引之外的所有成员。这就是我在搞乱的东西。

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 的构造函数。这为您留下了对列表的引用,以便您可以更改数据,同时允许适配器根据需要进行管理和显示。

注意:修改数据对象时必须调用

myAdapter.notifyDataSetChanged()

afterwards - 这也必须在 UI 线程上。显然,列表的更改不必发生在 UI 线程上,而且很可能不会发生在 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();
}
}
}

关于java - 数组适配器 : Remove by Index,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6964768/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com