Java Android工具栏项OnClickListener
我有一个工具栏和一个项目(add),单击它时,会在下面的listView中添加一个视图。但是,Java Android工具栏项OnClickListener,java,android,onclicklistener,toolbar,Java,Android,Onclicklistener,Toolbar,我有一个工具栏和一个项目(add),单击它时,会在下面的listView中添加一个视图。但是,onOptionsItemSelected提供了一次单击的效果,因此它只添加一个视图,在我的情况下,我需要多个视图,因此需要多次单击。如何设置所有内容,使项目的行为类似于onClickListener,而不是单击一次 @Override public boolean onOptionsItemSelected(MenuItem item) { int id = item.getItemId();
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);
}
@覆盖
公共布尔值onOptionsItemSelected(菜单项项){
int id=item.getItemId();
if(id==R.id.addButton){
最终文本视图noProject=(文本视图)findViewById(R.id.noProject);
最终ArrayList listItems=新ArrayList();
最终列表Adapter addAdapter=新阵列适配器(此,
R.layout.list_项,R.id.listFrame,listItems);
最终ListView lv=(ListView)findViewById(R.id.lv);
lv.设置适配器(添加适配器);
noProject.setVisibility(View.GONE);
lv.setVisibility(视图可见);
列表项。添加(“新项目”);
((ArrayAdapter)addAdapter).notifyDataSetChanged();
}
if(id==R.id.addPeople){
返回true;
}
返回super.onOptionsItemSelected(项目);
}
Android总是在监听菜单项的点击。点击你的动作就会发生,所以如果你想在菜单中添加这个功能,你需要点击多次
我通常在onCreate或onCreateView中设置列表适配器。建立后,可以执行addAdapter.clear()和addAdapter.add(项)。您不需要直接引用listitems,因为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));
}
/“对于从索引0开始的i(索引),运行直到索引 for(int index=0;indexHaven没有对for循环做太多工作,但我会看看我能做些什么,谢谢:)Ok添加了一个超基本的示例,说明如何在这个场景中使用它们。祝你好运循环在我使用过的每种编程语言中都是一种基本的结构,因此您肯定会熟悉它们。1)为什么使用Java 6语法?2) 不要每次都添加新的ArrayAdapter。