【问题标题】:How can I delete specific data in listview using Shared Preference in android studio?如何在 android studio 中使用 Shared Preference 删除列表视图中的特定数据?
【发布时间】:2018-04-08 18:43:18
【问题描述】:

我想从 sharedPreferences 中删除我在 listView 中选择的项目。但我不知道如何将它包含在我的代码中。我已经尝试了很多从互联网上看到的代码,但这会使我的应用程序出错。有人可以给我一个想法吗?大有帮助。谢谢

这是 MySharedPreference 类:

public class MySharedPreference {
    private SharedPreferences pref;
    private SharedPreferences.Editor editor;
    // Context
    private Context _context;

    // Shared pref mode
    int PRIVATE_MODE = 0;

    // Sharedpref file name
    private static final String PREF_NAME = "pref";
    private static final String SCORES = "scores";

    public MySharedPreference(Context context) {
        this._context = context;
        pref = _context.getSharedPreferences(PREF_NAME, PRIVATE_MODE);
        editor = pref.edit();
    }

    public void saveHighScoreList(String scoreString) {
        editor.putString(PREF_NAME, scoreString);
        editor.commit();
    }

    public String getHighScoreList() {
        return pref.getString(PREF_NAME, "");
    }

}

这是我的 ListViewAdapter:

public class ListViewAdapter_History extends ArrayAdapter<Input> {

    private Activity activity;

    public ListViewAdapter_History(Activity activity, int resource, List<Input> scores) {
        super(activity, resource, scores);
        this.activity = activity;

    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {

        ViewHolder holder = null;
        LayoutInflater inflater = (LayoutInflater) activity
                .getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
        // If holder not exist then locate all view from UI file.
        if (convertView == null) {
            // inflate UI from XML file
            convertView = inflater.inflate(R.layout.item_listview, parent, false);
            // get all UI view
            holder = new ViewHolder(convertView);
            // set tag for holder
            convertView.setTag(holder);
        } else {
            // if holder created, get tag from view
            holder = (ViewHolder) convertView.getTag();
        }

        Input score = getItem(position);

        holder.score.setText(score.getScore());

        return convertView;
    }

    private static class ViewHolder {

        private TextView score;

        public ViewHolder(View v) {

            score = (TextView) v.findViewById(R.id.score);
        }
    }
}

我希望它对我的另一个类执行删除共享首选项,该类是删除按钮所在的位置,但我仍在考虑我将选择 onItemLongClick 或简单的删除按钮。

ps。我希望你明白我想要达到的目标。谢谢

【问题讨论】:

    标签: android android-studio sharedpreferences


    【解决方案1】:

    您必须在适配器中实例化 MySharedPreference 类并在 MySharedPreference 类中创建删除方法:

    public void deletePrefs(String score){
        editor.remove(score);
    }
    

    在你的适配器中:

    convertView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                String s=getItem(position).getScore().getText().toString();
                    presfs.deletePrefs(s)
                }
            });
    

    【讨论】:

    • 什么是 presfs ?
    • `MySharedPreference` 的实例化:MySharedPreference prefs=new MySharedPreference(activity);
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多