gpt4 book ai didi

java - Android 工具栏项目 OnClickListener

转载 作者:太空狗 更新时间:2023-10-29 14:57:35 34 4
gpt4 key购买 nike

我有一个工具栏和一个项目(添加),当单击它时,会在下面的 ListView 中添加一个 View 。但是,onOptionsItemSelected 为您提供单击的效果,因此它只添加一个 View ,在我的例子中,我需要多个 View ,因此需要多次单击。我如何设置所有内容,使项目表现为 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);
}

最佳答案

Android 始终监听菜单项点击。单击时您的操作将会发生,因此如果您想要在菜单中添加此功能,则无论如何都需要单击多次。

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

我的 ListView 通常使用 for 循环来填充。如果您想要添加多个 View ,那么您是否可以设置一个循环而不是等待/要求更多点击?

也许我没有完全理解用例,但基本的 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));
}

类似的东西。我编造了方法名称,显然它将取决于您的数据结构。

关于java - Android 工具栏项目 OnClickListener,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29903006/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com