如何使用共享preferences保存在一个数组我最后选定的项目?数组、如何使用、项目、preferences

2023-09-03 23:04:55 作者:没有心的人〃

我使用数组与复选框一同显示。我想确保单击完成按钮时,与实体选中它会记住最后选定的实体,所以当我回到这一观点,显示为选定最后选择的数组对象(因为我选择了它最后一次)。有没有什么办法可以做到这一点在我的code与共享preferences? 这是我的code:

 公共类DashboardManageMarketsFragment扩展AbsLoaderItemFragment实现OnClickListener,SelectionCallBack {


        公共最后静态字符串TAG_MANAGE_DASHBOARD_MARKETS_FRAGMENT =DashboardManageMarketsEditFragment;

        私人布尔mIsDoneButtonClicked;
        公共静态最后弦乐CATEGORY_NAME =类别名称;
        私人字符串mTemplateId;
        私有静态字符串m_keyword =指数;
        私有静态字符串m_keyword1 =品;
        私有静态字符串m_keyword2 =点;
        私有静态字符串m_keyword3 =基准;


        公共静态最后弦乐GRID_NAME =gridName;
        公共静态DashboardManageMarketsFragment的newInstance(最终FragmentManager经理){
            最后DashboardManageMarketsFragment片段=新DashboardManageMarketsFragment();
            最后的捆绑包=新包();
            fragment.setArguments(包);
            最后FragmentInfo fragmentInfo =新FragmentInfo(TransactionMethods.ADD,R.id.fragment_container);
            fragmentInfo.setFragmentTag(TAG_MANAGE_DASHBOARD_MARKETS_FRAGMENT);
            fragmentInfo.setAnimation(R.anim.no_animation,R.anim.no_animation);
            fragmentInfo.setPopAnimation(R.anim.no_animation,R.anim.no_animation);
            。FragmentStackManager.getInstance()transitionFragment(经理,片段,fragmentInfo);

            返回片段;
        }

        私人ExpandableListView categoriesList;
        私人MenuExpandableListAdapter mAdapter;
        私人诠释iSelected = 0;
        @覆盖
        公共无效选择(字符串文本,诠释组,诠释儿童){
            iSelected =组;

            Log.d(测试员,在这里它覆盖+组);

        }
        私人地图<字符串,字符串>图=新的HashMap<字符串,字符串>();

        公共静态最后弦乐默认为默认 - 符号,最后,网Chng(更改),%Chng(更改);

        公共静态最后的String []组=新的String [] {指标,商品,外汇现货,基准};

        公共静态最后的String [] []孩子=新的String [] [] {
                {m_keyword},
                {m_keyword1},
                {m_keyword2},
                {m_keyword3}
        };

        布尔isWmUser = FALSE;

        @覆盖
        公共查看onCreateView(LayoutInflater充气,容器的ViewGroup,捆绑savedInstanceState){
            查看查看= inflater.inflate(R.layout.fragment_dashboard_manage_markets,集装箱,假);

            categoriesList =(ExpandableListView)view.findViewById(R.id.categories);
            isWmUser = UserProfileManager.getInstance()isWealthManagement()。

            字符串currTemplate = DashboardManageMarketsFragment.Default;
            对于(@燮pressWarnings(rawtypes)Map.Entry的条目:map.entrySet()){
                如果(mTemplateId.equals(entry.getValue())){
                    currTemplate =(字符串)entry.getKey();
                    打破; //断裂了,因为它的一对一映射
                }
            }

            mAdapter =新MenuExpandableListAdapter(DashboardManageMarketsFragment.groups,DashboardManageMarketsFragment.children,currTemplate,this.getActivity());
            mAdapter.setSelectionListner(本);
            categoriesList.setGroupIndicator(空);
            categoriesList.setChildIndicator(空);
            categoriesList.setAdapter(mAdapter);
            categoriesList.setOnChildClickListener(mAdapter);

            返回查看;
        }
        公共无效的OnUpdate(意图数据){

            restartContentLoader();
        }

        @覆盖
        公共无效onActivityCreated(包savedInstanceState){
            super.onActivityCreated(savedInstanceState);
            LayoutUtils.showLoading(getView(),R.id.manage_market_​​list);
        }

        @覆盖
        公共乌里onCreateContentUri(){
            建设者建设者= MarketsContentProvider.MARKETS_GRID_URI.buildUpon();

            返回builder.build();

        }

        @覆盖
        公共无效onCursorLoaded(最终开放的URI,最终光标光标){
            如果(!mIsDoneButtonClicked){
                如果(cursor.getCount()大于0){
                    mCursor =光标;
                    showResults(URI);
                    Log.d(marketsstuff,我在donebutton);
                } 其他 {
                    如果(!isOperationExecuting()){
                        showNoResults(URI);
                    }
                }
            }
        }

        @覆盖
        公共无效的OnStart(){
            super.onStart();
            setupListeners();
        }

        @覆盖
        公共无效onResume(){
            最后IntentFilter的过滤器=新的IntentFilter();
            filter.addAction(BroadcastActions.MARKETS_DASHBOARD);
            super.onResume();
        }

        @覆盖
        公共无效的onPause(){

            super.onPause();
        }

        @覆盖
        公共无效showResults(URI URI){
            LayoutUtils.showResults(getView(),R.id.manage_market_​​list);
                }

        @覆盖
        公共无效showNoResults(URI URI){
            showResults(URI);
        }

        私人无效setupListeners(){
            ManageDashboardMarketsActivity活性=(ManageDashboardMarketsActivity)getActivity();
            activity.setDoneButtonEnabled(这一点,真正的);

        }
        @覆盖
        公共无效的onClick(最终查看视图){
            ManageDashboardMarketsActivity活性=(ManageDashboardMarketsActivity)getActivity();
            开关(view.getId()){

                案例R.id.button_done:

                    activity.hideSoftKeyboard(getView());
                    打破;

                默认:
                    打破;
            }

        }


        公共无效editList(){
            ManageDashboardMarketsActivity活性=(ManageDashboardMarketsActivity)getActivity();
                mIsDoneButtonClicked = TRUE;
                activity.setDoneButtonEnabled(这一点,假);

                DashboardManageMarketsOperation operationvar =新DashboardManageMarketsOperation(MarketsContentProvider.MARKETS_GRID_URI);
                operationvar.setIndex(iSelected);
                RestService.start(getActivity(),operationvar);
            Log.d(里编辑列表测试员,);
        }

        @覆盖
        公共布尔setViewValue(查看为arg0,光标ARG1,ARG2 INT){
            // TODO自动生成方法存根
            返回false;
        }
 

解决方案

这应该很容易。建立在共享preFS这2个功能:

 公共无效savemarketsselectedindex(INT的selectedIndex){
        mShared preferences.edit()putInt(PROPERTY_MARKETS_INDEX,的selectedIndex)。适用()。
        Log.d(newsdash,);
    }

    公众诠释getmarketsselectedindex(){
        返回mShared preferences.getInt(PROPERTY_MARKETS_INDEX,0);
    }
 

调用这个类中的:

 私人INT iSelected =共享preferencesManager.getInstance()getmarketsselectedindex()。
 
存在一个按升序排列的链表,给你这个链表的头节点 head ,请你删除链表中所有存在数字重复情况的节点,只保留原始链表中没有重复出现的数字 返回同样按升序排列的结果链表

和这里面的公共无效选择:

 共享preferencesManager.getInstance()savemarketsselectedindex(iSelected)。
 

和shold基本工作。

I am using an array to display along with checkboxes. I want to make sure when the done button is clicked and the entity is selected it remembers the last selected entity so when I go back to this view it shows the last selected array object as selected (as I selected it last time). Is there any way I can achieve that in my code with shared preferences? Here's my code:

  public class DashboardManageMarketsFragment extends AbsLoaderItemFragment implements OnClickListener,SelectionCallBack {


        public final static String TAG_MANAGE_DASHBOARD_MARKETS_FRAGMENT = "DashboardManageMarketsEditFragment";

        private boolean mIsDoneButtonClicked;
        public static final String CATEGORY_NAME = "categoryName";
        private String mTemplateId;
        private static String m_keyword = "Indices";
        private static String m_keyword1 = "Commodities";
        private static String m_keyword2 = "Spot";
        private static String m_keyword3 = "Benchmarks";


        public static final String GRID_NAME = "gridName";
        public static DashboardManageMarketsFragment newInstance(final FragmentManager manager) {
            final DashboardManageMarketsFragment fragment = new DashboardManageMarketsFragment();
            final Bundle bundle = new Bundle();
            fragment.setArguments(bundle);
            final FragmentInfo fragmentInfo = new FragmentInfo(TransactionMethods.ADD, R.id.fragment_container);
            fragmentInfo.setFragmentTag(TAG_MANAGE_DASHBOARD_MARKETS_FRAGMENT);
            fragmentInfo.setAnimation(R.anim.no_animation, R.anim.no_animation);
            fragmentInfo.setPopAnimation(R.anim.no_animation, R.anim.no_animation);
            FragmentStackManager.getInstance().transitionFragment(manager, fragment, fragmentInfo);

            return fragment;
        }

        private ExpandableListView categoriesList;
        private MenuExpandableListAdapter mAdapter;
        private int iSelected = 0;
        @Override
        public void selected(String text, int group, int child) {
            iSelected = group;

            Log.d("tester","here it overrides"+group);

        }   
        private Map<String, String> map = new HashMap<String, String>();

        public static final String Default   = "Default - Symbol, Last, Net Chng, % Chng";

        public static final  String[] groups = new String[] { "Indices", "Commodities", "FX Spot", "Benchmarks" };

        public static final  String[][] children = new String[][]  {
                { m_keyword } ,
                { m_keyword1 },
                { m_keyword2},
                { m_keyword3 }
        };  

        boolean isWmUser = false;

        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
            View view = inflater.inflate(R.layout.fragment_dashboard_manage_markets, container, false);

            categoriesList =  (ExpandableListView)view.findViewById(R.id.categories);       
            isWmUser = UserProfileManager.getInstance().isWealthManagement();   

            String currTemplate = DashboardManageMarketsFragment.Default;
            for(@SuppressWarnings("rawtypes") Map.Entry entry: map.entrySet()){
                if(mTemplateId.equals(entry.getValue())){
                    currTemplate = (String) entry.getKey();
                    break; //breaking because its one to one map
                }
            }

            mAdapter = new MenuExpandableListAdapter(DashboardManageMarketsFragment.groups, DashboardManageMarketsFragment.children, currTemplate,  this.getActivity());
            mAdapter.setSelectionListner(this);
            categoriesList.setGroupIndicator(null);
            categoriesList.setChildIndicator(null);
            categoriesList.setAdapter(mAdapter);
            categoriesList.setOnChildClickListener(mAdapter);   

            return view;
        }
        public void onUpdate(Intent data) {

            restartContentLoader();
        }

        @Override
        public void onActivityCreated(Bundle savedInstanceState) {
            super.onActivityCreated(savedInstanceState);
            LayoutUtils.showLoading(getView(), R.id.manage_market_list);
        }

        @Override
        public Uri onCreateContentUri() {
            Builder builder = MarketsContentProvider.MARKETS_GRID_URI.buildUpon();

            return builder.build();

        }

        @Override
        public void onCursorLoaded(final Uri uri, final Cursor cursor) {
            if (!mIsDoneButtonClicked) {
                if (cursor.getCount() > 0) {
                    mCursor = cursor;
                    showResults(uri);
                    Log.d("marketsstuff","i am at donebutton");
                } else {
                    if (!isOperationExecuting()) {
                        showNoResults(uri);
                    }
                }
            }
        }

        @Override
        public void onStart() {
            super.onStart();
            setupListeners();
        }

        @Override
        public void onResume() {
            final IntentFilter filter = new IntentFilter();
            filter.addAction(BroadcastActions.MARKETS_DASHBOARD);
            super.onResume();
        }

        @Override
        public void onPause() {

            super.onPause();
        }

        @Override
        public void showResults(Uri uri) {
            LayoutUtils.showResults(getView(), R.id.manage_market_list);
                }

        @Override
        public void showNoResults(Uri uri) {
            showResults(uri);
        }

        private void setupListeners() {
            ManageDashboardMarketsActivity activity = (ManageDashboardMarketsActivity)getActivity();
            activity.setDoneButtonEnabled(this, true);

        }
        @Override
        public void onClick(final View view) {
            ManageDashboardMarketsActivity activity = (ManageDashboardMarketsActivity) getActivity();
            switch (view.getId()) {

                case R.id.button_done:

                    activity.hideSoftKeyboard(getView());
                    break;

                default:
                    break;
            }

        }


        public void editList() {
            ManageDashboardMarketsActivity activity = (ManageDashboardMarketsActivity)getActivity();
                mIsDoneButtonClicked = true;
                activity.setDoneButtonEnabled(this, false);

                DashboardManageMarketsOperation operationvar = new DashboardManageMarketsOperation( MarketsContentProvider.MARKETS_GRID_URI);
                operationvar.setIndex(iSelected);
                RestService.start(getActivity(), operationvar);
            Log.d("tester", "inside edit list");
        }

        @Override
        public boolean setViewValue(View arg0, Cursor arg1, int arg2) {
            // TODO Auto-generated method stub
            return false;
        }

解决方案

It should be easy. Create these 2 functions in the shared prefs:

public void savemarketsselectedindex(int selectedindex) {
        mSharedPreferences.edit().putInt(PROPERTY_MARKETS_INDEX, selectedindex).apply();
        Log.d("newsdash", "");
    }

    public int getmarketsselectedindex(){
        return mSharedPreferences.getInt(PROPERTY_MARKETS_INDEX, 0);
    }

call this in your class:

private int iSelected = SharedPreferencesManager.getInstance().getmarketsselectedindex();

and this inside public void selected:

SharedPreferencesManager.getInstance().savemarketsselectedindex(iSelected);

and that shold basically work.