현재 내 앱에 재질 디자인을 포함 할 수 있도록 AppCompat 버전 21을 사용하도록 내 앱을 변경하고 있습니다.AppCompat를 사용하는 문맥 액션 바
내 활동 중 하나가 목록보기를 가지고 있으며, 클래스는 ActionBarActivity를 확장하고 있습니다.
목록 활동이 아니므로 findViewById를 사용하여 목록보기를 가져 와서이를 변수에 저장하면 클래스 전체에서 목록보기의 다양한 측면을 설정할 수 있습니다.
그러나 작업 표시 줄을 대체하고 AppCompat를 사용하여 도구 모음을 구현 한 이후로 어떤 이유로 다중 선택이 더 이상 작동하지 않습니다. 하나의 항목을 선택할 수 있으며 그 밖의 모든 항목은 여러 항목을 선택할 수 있습니다. 당신이 제공 할 수있는 어떤 도움
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;
}
}
감사 :
은 아래 목록보기를 얻고 클릭 리스너 및 다중 선택 모드 등을 설정하는 내 코드입니다.
잘 잡습니다. 나는 그것이 그곳에 있었던 이유를 모르며, 거기에 있었기 때문에 그 코드가 어떻게 작동했는지 나는 알지 못합니다. – Boardy