Android工具栏项OnClickListener

时间:2015-04-27 18:10:32

标签: java android onclicklistener toolbar

我有一个工具栏和一个项目(添加),当点击它时,会在下面的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 个答案:

答案 0 :(得分:0)

Android总是在监听菜单项的点击次数。点击您的操作即可,如果您想在菜单中添加此功能,则无论如何都需要多次点击。

我通常在onCreate或onCreateView上设置我的列表适配器。一旦建立,您可以执行addAdapter.clear()和addAdapter.add(item)。你不应该直接引用你的listitems,因为ArrayAdapter.add()方法被设置为附加到该列表然后如果我没有弄错你可以摆脱notifyDataSetChange() - 我&#39 ;我永远不必将此方法与任何默认列表适配器或我编写的自定义适配器一起使用。 .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));
}

这样的事情。我明确表示了方法名称,这取决于你的数据结构。