[英]Android MultiChoiceModeListener support for 2.3
To support action bar im using Android Support Library package V4 and V7.Im using MultiChoiceModeListener in my applicaiton. 为了在我的应用程序中使用MultiChoiceModeListener来使用Android支持库程序包V4和V7.Im支持操作栏即时消息。 How do i can use MultiChoiceModeListener for 2.3 devices.. 如何将MultiChoiceModeListener用于2.3设备。
Working Example V7 V7工作示例
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.support.v7.view.ActionMode;
import android.util.SparseBooleanArray;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.AdapterView.OnItemClickListener;
public class MainActivity extends ActionBarActivity {
static final String[] COUNTRIES = new String[] {
"Afghanistan", "Albania", "Algeria", "American Samoa", "Andorra",
"Angola", "Anguilla", "Canada", "France", "Spain" };
private ListView mListView;
private ActionMode mMode;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mMode = null;
mListView = (ListView) findViewById(R.id.listView1);
mListView.setAdapter(new ArrayAdapter(this,
android.R.layout.simple_list_item_multiple_choice, COUNTRIES));
mListView.setItemsCanFocus(false);
mListView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
mListView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
// TODO Auto-generated method stub
SparseBooleanArray checked = mListView.getCheckedItemPositions();
boolean hasCheckedElement = false;
for (int i = 0 ; i < checked.size() && ! hasCheckedElement ; i++) {
hasCheckedElement = checked.valueAt(i);
}
if (hasCheckedElement) {
if (mMode == null) {
mMode = startSupportActionMode(new ModeCallback());
}
} else {
if (mMode != null) {
mMode.finish();
}
}
}
});
}
private final class ModeCallback implements ActionMode.Callback {
@Override
public boolean onCreateActionMode(ActionMode mode, Menu menu) {
// Create the menu from the xml file
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.activity_main, menu);
return true;
}
@Override
public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
// Here, you can checked selected items to adapt available actions
return false;
}
@Override
public void onDestroyActionMode(ActionMode mode) {
// Destroying action mode, let's unselect all items
for (int i = 0; i < mListView.getAdapter().getCount(); i++)
mListView.setItemChecked(i, false);
if (mode == mMode) {
mMode = null;
}
}
@Override
public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
long[] selected = mListView.getCheckedItemIds();
if (selected.length > 0) {
for (long id: selected) {
// Do something with the selected item
}
}
mode.finish();
return true;
}
};
}
I'm using this library successfully which has min SDK 7. 我正在成功使用具有最小SDK 7的该库。
https://github.com/akalipetis/action-mode-list-fragment/ https://github.com/akalipetis/action-mode-list-fragment/
ListFragment implementation, for handling ActionMode showup and management using the AppCompat library and being backwards compatible to 2.1. ListFragment实现,用于使用AppCompat库处理ActionMode的显示和管理,并向后兼容2.1。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.