【发布时间】:2017-08-02 21:01:18
【问题描述】:
我想在卡片视图被点击时保存它的标题。我很确定我正在以正确的方式发送文本标题,但由于某种原因,我无法在单击项目时保存文本。顺便说一句,每当单击该项目时,它都会打开我的另一个名为“收藏夹”的活动,并显示我想要的文本,但每当我手动打开它时,它什么也不显示。请将此图像作为参考。
任何帮助将不胜感激。谢谢。
点击前
点击后
这是我的 RecyclerAdapter。我尝试以两种方式发送数据,intent 和 SharedPreferences,但都不起作用
public class MyRecyclerAdapter extends RecyclerView.Adapter<MyViewHolder>{
Context context;
ArrayList<Album> albums;
public MyRecyclerAdapter(Context c, ArrayList<Album> albums){
this.context=c;
this.albums=albums;
}
// Initialize holder
@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.model,null);
MyViewHolder holder = new MyViewHolder(v);
return holder;
}
//Bind data to views
@Override
public void onBindViewHolder(MyViewHolder holder, int position) {
holder.nameTxt.setText(albums.get(position).getName());
holder.img.setImageResource(albums.get(position).getImage());
//listener
holder.setItemClickListener(new ItemClickListener() {
@Override
public void onItemClick(View v, int pos) {
Toast.makeText(context,albums.get(pos).getName() + " ,added to favorite ",Toast.LENGTH_SHORT).show();
// sending data using intent
Intent intent = new Intent(context, favorite.class);
intent.putExtra("text", albums.get(pos).getName());
intent.putExtra("t", albums.get(pos).getImage());
context.startActivity(intent);
// data sharing using sharedPref
SharedPreferences.Editor editor = context.getApplicationContext().getSharedPreferences("lado", MODE_PRIVATE).edit();
editor.putString("mug",albums.get(pos).getName());
editor.apply();
}
});
}
@Override
public int getItemCount() {
return albums.size();
}
}
这是我的另一个活动,我想保存并显示文本。
public class favorite extends AppCompatActivity {
@BindView(R.id.demoText)
TextView tv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_favorite);
ButterKnife.bind(this);
/**
* I'm using bundle here
*/
Bundle bundle = getIntent().getExtras();
if(bundle!=null){
String value2 = bundle.getString("text");
tv.setText(value2);
}
/**
* I'm using sharedPref here
*/
SharedPreferences prefs = getSharedPreferences("lado", MODE_PRIVATE);
String restoredText = prefs.getString("text", null);
if (restoredText != null) {
String name = prefs.getString("mug", "No name defined");//"No name defined" is the default value.
tv.setText(name);
}
}
}
【问题讨论】:
标签: android android-intent sharedpreferences