Moe*_*ABM 3 java android listview android-arrayadapter
我有一个由新闻服务器纲要(只是一个故事片段列表)填充的 ListView 和一个用于修改该 ListView 的 arrayAdapter。
我可以通过 'remove(Object)' 函数删除项目,但是如果有多个 'Object' 实例怎么办?remove() 仅删除了“Object”的第一个实例。例如,如果不删除第一个对象,我将无法删除数组适配器中的第二个“对象”。所以我的问题是我该如何解决这个问题?
例如:破败A
story 1
story 2
Break
story 3
story 4
Break
story 5
etc...
Run Code Online (Sandbox Code Playgroud)
所以在这个例子中,我不能删除第二个 'Break',因为 remove('Break') 将删除第一个。如果我可以 removeByIndex(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;
}
Run Code Online (Sandbox Code Playgroud)
帮助或建议是appriciated。
使用 List 自己处理字符串集合,并将对象传递给 ArrayAdapter 的构造函数。这为您留下了对列表的引用,因此您可以更改数据,同时允许适配器根据需要进行管理和显示。
注意:修改数据对象时必须调用
myAdapter.notifyDataSetChanged()
Run Code Online (Sandbox Code Playgroud)
之后 - 这也必须在 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();
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7729 次 |
| 最近记录: |