尝试获取要保存在共享首选项中的文本视图数组



现在我有一个用于我的recyclerview适配器的方法,如果检查了项目,则该项目中包含的电话号码将用于不同的活动。我想知道的是,如果我选择一些项目,我如何获得这些数字文本视图的数组,并将它们添加到共享的首选项中,然后在不同的活动中使用。这是我的适配器,我可以在其中选择一个项目,然后将数字添加到字符串中:

adapter1 = new FirebaseRecyclerAdapter<contact, contactAdapter>(options1) {
@Override
protected void onBindViewHolder(@NonNull final contactAdapter holder, final int position, @NonNull final contact model) {
holder.contactName.setText(model.getContactName());
holder.contactPhone.setText(model.getContactPhone());
SharedPreferences prefs =  Home.this.getActivity().getSharedPreferences("check", MODE_PRIVATE);
String check_state = prefs.getString( "state", "default");
if(check_state.equals("true"){
holder.chk.setChecked(true);
}
else {
holder.chk.setChecked(false);
}
holder.chk.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked) {
holder.chk.setChecked(true);
for (int i = 0; i < adapter1.getItemCount(); i++) {
if (adapter1.getItem(i).isSelected(true)) {
number = ((TextView) holder.itemView.findViewById(R.id.contactPhone)).getText().toString();
Toast.makeText(getActivity(), "Data Inserted....." + number, Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(getActivity(), "Error", Toast.LENGTH_LONG).show();
}
}
SharedPreferences.Editor editor = Home.this.getActivity().getSharedPreferences("check", MODE_PRIVATE).edit();
editor.putString("state", "true");
editor.putString("number", number);
editor.apply();
adapter1.notifyDataSetChanged();
}else {
holder.chk.setChecked(false);
SharedPreferences.Editor editor =  Home.this.getActivity().getSharedPreferences("check", MODE_PRIVATE).edit();
editor.putString("state", "false");
editor.apply();
adapter1.notifyDataSetChanged();
}
}
});
}

正如你所看到的,我将数字保存到一个字符串中,并将数字放入一个共享偏好中,这似乎很有效。关于如何使用数组执行此操作,有什么建议吗?

在写入共享首选项时为键添加一个"int"。

类似这样的东西:

if (isChecked) {
holder.chk.setChecked(true);
int j =0;
for (int i = 0; i < adapter1.getItemCount(); i++) {
if (adapter1.getItem(i).isSelected(true)) {
number = ((TextView) holder.itemView.findViewById(R.id.contactPhone)).getText().toString();
Toast.makeText(getActivity(), "Data Inserted....." + number, Toast.LENGTH_SHORT).show();
editor.putString("state_"+j,"true");
editor.putString("number_"+j,number);
j++;
} else {
Toast.makeText(getActivity(), "Error", Toast.LENGTH_LONG).show();
}
}
editor.apply();

在读回的同时,把它们循环起来!

最新更新