Android 工具栏项 OnClickListener

Posted

技术标签:

【中文标题】Android 工具栏项 OnClickListener【英文标题】:Android Toolbar item OnClickListener 【发布时间】:2015-07-06 08:02:18 【问题描述】:

我有一个工具栏和一个项目(添加),单击它会在下面的 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。 【参考方案1】:

android 一直在监听菜单项的点击。单击时您的操作将发生,因此如果您希望在菜单中添加此添加功能,则无论如何都需要单击多次。

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

我的列表视图通常使用 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 循环做得不多,但我会看看我能做什么,谢谢 :) Ok 添加了一个超基本示例,说明如何在此场景中使用它们。祝你好运。循环是我用过的每一种编程语言的基本结构,所以你一定要熟悉它们。

以上是关于Android 工具栏项 OnClickListener的主要内容,如果未能解决你的问题,请参考以下文章

Android 和 Exoplayer 中的视图绑定

Xamarin Forms:iOS 中的内容页面辅助工具栏项与 Android 相同

Android弹出多选框设计

样式化工具栏菜单项

怎样使用ListView?

Android studio一些设置项