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