gpt4 book ai didi

android - 使用 AppCompat 的上下文操作栏

转载 作者:行者123 更新时间:2023-11-29 01:38:07 26 4
gpt4 key购买 nike

我目前正在努力将我的应用更改为使用 AppCompat 版本 21,以便我可以将 Material Design 包含到我的应用中。

我的一个 Activity 有一个 ListView ,该类正在扩展 ActionBarActivity。

因为它不是列表 Activity ,所以我改为使用 findViewById 获取 ListView 并将其存储在变量中,这样我就可以在整个类(class)中使用它来设置 ListView 的各个方面。

它最初是工作的,但是,由于某种原因,因为我已经实现了工具栏来替换操作栏并使用 AppCompat,所以多选不再有效。我可以选择一个项目,其他一切都有效,只是多项选择被破坏了。

下面是我获取 ListView 和设置点击监听器和多选模式等的代码:

Toolbar toolbar = (Toolbar)findViewById(R.id.toolbar);
setSupportActionBar(toolbar);

CommonTasks commonTasks = new CommonTasks(ConnectionManager.this);
SharedPreferences settings = commonTasks.getAppsSharedPreferences();

adView = (AdView) findViewById(R.id.adView);
CommonTasks.getAddRequest(ConnectionManager.this, adView, settings.getBoolean(Defines.SharedPreferenceSettings.UPGRADE_PURCHASED, false));

getSupportActionBar().setDisplayHomeAsUpEnabled(true);

swipeDetector = new SwipeDetector();
listView = (ListView)findViewById(android.R.id.list);
listView.setOnTouchListener(swipeDetector);
listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE_MODAL);
listView.setOnItemClickListener(mListItemClickListener);
listView.setMultiChoiceModeListener(new ModeCallBack());

listView.setOnItemClickListener(mItemClickListener);

private class ModeCallBack implements MultiChoiceModeListener
{

@Override
public boolean onActionItemClicked(ActionMode mode, MenuItem item) {

switch (item.getItemId())
{
case R.id.manageCon_mnuDeleteConnection:
deleteConnection(selectedConnectionName);
break;
case R.id.manageCon_mnuEditConnection:
editConnection(selectedConnectionName);
break;
}
return false;
}

@Override
public boolean onCreateActionMode(ActionMode mode, Menu menu) {

MenuInflater inflator = getMenuInflater();
inflator.inflate(R.menu.manage_connections_context, menu);
mode.setTitle("Change Connection");
return true;
}

@Override
public void onDestroyActionMode(ActionMode mode) {

}

@Override
public boolean onPrepareActionMode(ActionMode mode, Menu menu) {

return true;
}

@Override
public void onItemCheckedStateChanged(ActionMode mode, int position,
long id, boolean checked) {
if (!handlingDBSelection)
{
handlingDBSelection = true;
selectedConnectionName = connectionArrayAdapter.getItem(position)
.toString();
final int checkedCount = listView.getCheckedItemCount();
switch (checkedCount)
{
case 0:
mode.setSubtitle(null);
break;
default:
listView.clearChoices();
listView.setItemChecked(position, true);
break;
}
handlingDBSelection = false;
}
}

最佳答案

为什么每次项目检查状态更改时调用 listView.clearChoices()?我没有看到完整的代码,但您似乎清除了所有检查,然后只检查了该项目。

关于android - 使用 AppCompat 的上下文操作栏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26557462/

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