Android 共享首选项使用关联菜单保存Listview项
我有一个上下文菜单栏,它有两个图标……当我单击“保存”图标时,我想将我在列表视图中选中的所有项目存储在SharedReferences中;当我单击“加载”图标时,我想所有选中的项目都以高亮显示的形式显示在列表中 图标在OnActionItemClicked中声明为菜单项 任何想法都将不胜感激 我的班级:Android 共享首选项使用关联菜单保存Listview项,android,listview,android-intent,sharedpreferences,contextmenu,Android,Listview,Android Intent,Sharedpreferences,Contextmenu,我有一个上下文菜单栏,它有两个图标……当我单击“保存”图标时,我想将我在列表视图中选中的所有项目存储在SharedReferences中;当我单击“加载”图标时,我想所有选中的项目都以高亮显示的形式显示在列表中 图标在OnActionItemClicked中声明为菜单项 任何想法都将不胜感激 我的班级: public class UserContacts extends ActionBarActivity { SimpleCursorAdapter mAdapter; Matr
public class UserContacts extends ActionBarActivity {
SimpleCursorAdapter mAdapter;
MatrixCursor mMatrixCursor;
ListView listview;
int count = 0;
SharedPreferences prf;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_user_contacts);
// The contacts from the contacts content provider is stored in this cursor
mMatrixCursor = new MatrixCursor(new String[] { "_id","name","photo","details"} );
// Adapter to set data in the listview
mAdapter = new SimpleCursorAdapter(getBaseContext(),
R.layout.lv_layout,
null,
new String[] { "name","photo","details"},
new int[] { R.id.tv_name,R.id.iv_photo,R.id.tv_details}, 0);
// Getting reference to listview
final ListView lstContacts = (ListView) findViewById(R.id.lst_contacts);
// Setting the adapter to listview
lstContacts.setAdapter(mAdapter);
// Creating an AsyncTask object to retrieve and load listview with contacts
ListViewContactsLoader listViewContactsLoader = new ListViewContactsLoader();
// Starting the AsyncTask process to retrieve and load listview with contacts
listViewContactsLoader.execute();
//Selecting and highlighting the elements in the listview
//Creating the context menu and the options for it
listview = (ListView) findViewById(R.id.lst_contacts);
listview.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE_MODAL);
listview.setMultiChoiceModeListener(new AbsListView.MultiChoiceModeListener() {
@Override
public void onItemCheckedStateChanged(ActionMode mode, int position, long id, boolean checked) {
try
{
final int checkedCount = listview.getCheckedItemCount();
mode.setTitle("Contacts: " + checkedCount);
if (checked)
{
count = count+1;
listview.getChildAt(position).setBackgroundColor(Color.parseColor("#6DCAEC"));
}
else
{
count = checkedCount;
listview.getChildAt(position).setBackgroundColor(Color.parseColor("#E7E8E9"));
}
}
catch (Exception e) {
e.printStackTrace();
}
}
@Override
public boolean onCreateActionMode(ActionMode mode, Menu menu) {
MenuInflater inflater = mode.getMenuInflater();
inflater.inflate(R.menu.contact_context_menu, menu);
return true;
}
@Override
public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
return false;
}
@Override
public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
switch (item.getItemId()) {
case R.id.delete_id:
Toast.makeText(getBaseContext(), count + " Contacts Deselected", Toast.LENGTH_SHORT).show();
count = 0;
mode.finish();
case R.id.save_id:
Toast.makeText(getBaseContext(), count + " Contacts Saved", Toast.LENGTH_SHORT).show();
count = 0;
mode.finish();
case R.id.load_id:
Toast.makeText(getBaseContext(), count + " Contacts Loaded", Toast.LENGTH_SHORT).show();
count = 0;
mode.finish();
}
return false;
}
@Override
public void onDestroyActionMode(ActionMode mode) {
}
});
}
你的代码怎么了?@Apurva…正如你所看到的,我正在调用contact.contract类中的数据…更靠近底部的是,当用户长时间单击时,会出现一个上下文菜单,我可以根据我单击的操作项执行各种任务…我的问题是保存和加载…我选择的要存储的项从SharedReferences中检索…目前我在SharefReferences上什么都没有,因为我不知道该怎么做?一个有起点的解释会更好吗?