首页 > 解决方案 > 当应用程序关闭并再次重新启动时,从 ListView 中保存所选项目

问题描述

目前,当用户使用 onItemClick 函数从列表视图中选择一个项目时,我能够成功获取数据并将其加载到其他片段中,但是当用户在任务管理器中关闭应用程序时,用户必须进入再次列表视图并再次从列表视图中选择项目。

我尝试使用 sharedPreferences 来保存和恢复列表视图中所选项目的值,但没有运气。

public static String SelectedName = null;
public static String SelectedPhNo = null;


// Set the ListViews OnItemClick Listener
            display_contacts1.setOnItemClickListener(new AdapterView.OnItemClickListener()
            {
                @Override
                public void onItemClick(AdapterView<?> parent, View view, int position, long id)
                {
                    //String namedisplay = arrayAdapter.getItem(position); //<<<<<<<<<< this gets the phone name
                    String namedisplay = myCursor.getString(myCursor.getColumnIndex(DataDBAdapter.COl_MYTABLE_PHONENAME));
                    String phoneno_display = myCursor.getString(myCursor.getColumnIndex(DataDBAdapter.COL_MYTABLE_PHONENUMBER));

                    Toast.makeText(view.getContext(), namedisplay + " Selected for Communication", Toast.LENGTH_SHORT).show();
                    Toast.makeText(view.getContext(), phoneno_display, Toast.LENGTH_SHORT).show();

                    // Set the selected contact variables
                    SelectedName = namedisplay;
                    SelectedPhNo = phoneno_display;
                 }
             });

 // Save the data here
    @Override
    public void onSaveInstanceState(Bundle outState)
    {
       super.onSaveInstanceState(outState);

      // Save the textview state 1st item is the key and 2nd item is the variable
      outState.putString("savedname", SelectedName);
      outState.putString("savedphNo", SelectedPhNo);
    }


 @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
    {
        View view = inflater.inflate(R.layout.fragment_select_modem, container, false);
        btn_add = (Button) view.findViewById(R.id.btn_add);

        if(savedInstanceState != null)
        {
            savedInstanceState.getString("savedname");
            savedInstanceState.getString("savedphNo");
        }
    }

标签: androidlistviewandroid-savedstate

解决方案


推荐阅读