Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/377.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/189.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用onclick删除SharedReference中输入的文本_Java_Android_Onclick_Sharedpreferences - Fatal编程技术网

Java 如何使用onclick删除SharedReference中输入的文本

Java 如何使用onclick删除SharedReference中输入的文本,java,android,onclick,sharedpreferences,Java,Android,Onclick,Sharedpreferences,如何使用onclick方法删除SharedReference中保存的文本?如果我在我的活动中输入某个内容并将其保存在第二个活动中,我可以单击它,但不能删除它。 举个例子:我写了一些名字,鲁道夫,哈利,甘道夫,如果我点击哈利,我想删除他的名字 以下是全部代码: enter code here RecyclerView recyclerView; SharedPreferences preferences; JSONObject sav

如何使用onclick方法删除SharedReference中保存的文本?如果我在我的活动中输入某个内容并将其保存在第二个活动中,我可以单击它,但不能删除它。 举个例子:我写了一些名字,鲁道夫,哈利,甘道夫,如果我点击哈利,我想删除他的名字

以下是全部代码:

enter code here RecyclerView recyclerView;
                SharedPreferences preferences;
                JSONObject saved;
                ViewGroup viewGroup;



                @Override
                protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.activity_dinner2);



                getSupportActionBar().setTitle("dinner");
                getSupportActionBar().setDisplayHomeAsUpEnabled(true);



                recyclerView = findViewById(R.id.recycler_view);




               preferences = getSharedPreferences("text", Context.MODE_PRIVATE);
               Log.d("Testing", preferences.getString("saved", ""));
               try {
               saved = new JSONObject(preferences.getString("saved", ""));
               } catch (Exception e) {
               e.printStackTrace();
               }

               final RecyclerView.LayoutManager layoutManager = new 
               LinearLayoutManager(Dinner2Activity.this);
               recyclerView.setLayoutManager(layoutManager);
               recyclerView.setAdapter(new Adapter());

               }


               public class Adapter extends RecyclerView.Adapter<Adapter.Holder> {

               public Adapter() {
               }

              @NonNull
              @Override
              public Adapter.Holder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
              View view = LayoutInflater.from(Dinner2Activity.this).inflate(R.layout.row_item, 
              viewGroup, false);
              Holder holder = new Holder(view);
              view.setOnClickListener(new View.OnClickListener() {
              @Override
              public void onClick(View view) {
              SharedPreferences preferences = getSharedPreferences("text", MODE_PRIVATE);
              preferences.edit().remove("").commit();



             }
             });
             return holder;
             }



             @Override
             public void onBindViewHolder(@NonNull Adapter.Holder holder, int position) {
             try {
             holder.textView.setText(saved.getString("saved" + position));
             } catch (JSONException e) {
            e.printStackTrace();
            }

            }

            @Override
            public int getItemCount() {
            return saved.length();
            }

            public class Holder extends RecyclerView.ViewHolder {
            TextView textView;

            public Holder(@NonNull View itemView) {
            super(itemView);
            textView = itemView.findViewById(R.id.text_view);

            }

            }

            }

            }

                here's the onclick:

enter code here @NonNull
                @Override
                public Adapter.Holder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
                View view = LayoutInflater.from(Dinner2Activity.this).inflate(R.layout.row_item, 
                viewGroup, false);
                Holder holder = new Holder(view);
                view.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                SharedPreferences preferences = getSharedPreferences("text", MODE_PRIVATE);
                preferences.edit().remove("").commit();



               }
               });
               return holder;
               }
在此处输入代码RecyclerView RecyclerView;
共享参考偏好;
JSONObject已保存;
视图组视图组;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_dinner2);
getSupportActionBar().setTitle(“晚餐”);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
recyclerView=findViewById(R.id.recycler\u视图);
首选项=GetSharedReferences(“文本”,Context.MODE\u PRIVATE);
Log.d(“Testing”、preferences.getString(“saved”、“saved”);
试一试{
saved=新的JSONObject(preferences.getString(“saved”、”);
}捕获(例外e){
e、 printStackTrace();
}
final RecyclerView.LayoutManager LayoutManager=新建
直线布局经理(晚餐2活动,本次);
recyclerView.setLayoutManager(layoutManager);
setAdapter(新适配器());
}
公共类适配器扩展了RecyclerView.Adapter{
公共适配器(){
}
@非空
@凌驾
public Adapter.Holder onCreateViewHolder(@NonNull ViewGroup父级,int viewType){
View View=LAYOUTING.from(晚餐2活动。此)。充气(R.layout.row_项目,
视图组,false);
支架=新支架(视图);
view.setOnClickListener(新的view.OnClickListener(){
@凌驾
公共void onClick(视图){

SharedReferences首选项=GetSharedReferences(“文本”,模式\私有); preferences.edit().remove(“”.commit(); } }); 报税表持有人; } @凌驾 public void onBindViewHolder(@NonNull Adapter.Holder Holder,int位置){ 试一试{ holder.textView.setText(saved.getString(“saved”+位置)); }捕获(JSONException e){ e、 printStackTrace(); } } @凌驾 public int getItemCount(){ 返回saved.length(); } 公共类持有者扩展了RecyclerView.ViewHolder{ 文本视图文本视图; 公共持有者(@NonNull View itemView){ 超级(项目视图); textView=itemView.findViewById(R.id.text\u视图); } } } } 这里是onclick: 在此处输入代码@NonNull @凌驾 public Adapter.Holder onCreateViewHolder(@NonNull ViewGroup父级,int viewType){ View View=LAYOUTING.from(晚餐2活动。此)。充气(R.layout.row_项目, 视图组,false); 支架=新支架(视图); view.setOnClickListener(新的view.OnClickListener(){ @凌驾 公共void onClick(视图){
SharedReferences首选项=GetSharedReferences(“文本”,模式\私有); preferences.edit().remove(“”.commit(); } }); 报税表持有人; }
尝试使用

SharedPreferences preferences = getSharedPreferences("DataStorage", 0);
preferences.edit().remove("keyOfprefToRemove").commit();

您可能会使适配器无效。我可以找到用于在移除后更新适配器的代码。如何执行此操作?请在适配器中使用notifyDataSetInvalidated()方法。您应该在删除项目后调用它。正确的。现在,如果我单击文本,它会移动,但不会被删除。SharedReferences preferences=GetSharedReferences(“文本”,MODE_PRIVATE);preferences.edit().remove(“Key”).commit();请输入正确的键,而不是空字符串共享首选项存储数据通知键/值对。如果您在其中有一个名为“person1”的键,并为其指定了值“gandalf”…要删除值gandalf,您只需获得一个SharedReference的引用,如上图所示,并在remove()中放入gandalf的键。在本例中,根据我的示例,您可以将“person1”