Android 工具栏项 OnClickListener

3

我有一个工具栏和一个项目(添加),当单击时,在下面的listView中添加一个视图。然而,onOptionsItemSelected 仅给出单击效果,因此只添加了一个视图,在我的情况下,我需要多个视图,因此需要多次单击。如何设置所有内容,以便该项行为类似于 onClickListener 而不是单击?

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    int id = item.getItemId();

    if (id == R.id.addButton){
        final TextView noProject = (TextView) findViewById(R.id.NOPROJECT);

        final ArrayList<String> listItems=new ArrayList<String>();
        final ListAdapter addAdapter = new ArrayAdapter<String>(this,
                    R.layout.list_item, R.id.listFrame, listItems);
        final ListView lv = (ListView) findViewById(R.id.lv);
        lv.setAdapter(addAdapter);

        noProject.setVisibility(View.GONE);
        lv.setVisibility(View.VISIBLE);
        listItems.add("New Project");
        ((ArrayAdapter) addAdapter).notifyDataSetChanged();
    }

    if (id == R.id.addPeople) {
        return true;
    }


    return super.onOptionsItemSelected(item);
}

  1. 为什么选择Java 6语法?
  2. 不要每次都添加新的ArrayAdapter。
- Jared Burrows
1个回答

0

Android始终在监听菜单项的点击,当您点击时将执行您的操作,因此如果您想要在菜单中添加此功能,则仍然需要多次点击。

我通常在onCreate或onCreateView中设置列表适配器。一旦建立了适配器,您可以执行addAdapter.clear()和addAdapter.add(item)。由于ArrayAdapter.add()方法已经设置为追加到该列表,因此您不需要直接引用列表项,然后如果没有错,您可以摆脱notifyDataSetChange() - 我从未使用过这个方法任何默认列表适配器或我编写的自定义适配器。.clear(), .add(), .insert(), 和 .remove()应该足够。

我的listview通常是使用for循环填充的。如果您想要添加多个视图,那么您只需设置循环而不必等待/要求进行更多的点击吗?

也许我还没有完全理解用例,但基本的for循环似乎是这里的答案。

编辑:

//For Each Loop - "For each individualItem in itemHolder"
listadapter.clear();
for(ItemType individualItem : itemHolder){
    listAdapter.add(individualItem.getText());
}

或者你可以使用传统的for循环

//"For i(index) starting at index 0, run until index < itemHolder.getItemCount() is false"
//for(initialize index variable : condition check : increment after each     iteration)
for(int index =0; index<itemHolder.getItemCount(); index++)
{
  listAdapter.add(itemHolder.getItemAt(index));
}

就像这样。我编造了一些方法名称,显然这将取决于您的数据结构。


我对for循环并不是很熟悉,但我会尽力而为,谢谢 :) - Richard
好的,我添加了一个超级基本的例子,展示了它们在这种情况下可能如何使用。祝你好运。循环结构是我所使用的每一种编程语言中都必不可少的结构,因此你应该一定要熟悉它们。 - thurst0n

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接