У меня есть список ресторанов, и когда я нажимаю на один элемент, у меня появляется другой вид деятельности, где у меня есть информация о ресторане, и я могу сохранить этот ресторан как свой любимый, нажав кнопку Сохранить.
Я использую общие предпочтения в своей активности KafDetails, чтобы всегда сохранять при каждом сохранении ресторана.А в FavKafActivity я читаю данные и показываю список избранного из значка моего меню.
Проблема в том, что в моем списке избранного хранится только один сохраненный ресторан.Когда я хочу сохранить другой, он никогда не показывается в моем списке избранного, есть только первый.
Я немного новичок в Android, и я не знаю, где я делаю неправильно?Как прочитать все элементы, которые сохранены для FavKaf?(всякий раз, когда нажимается кнопка сохранения для этого конкретного элемента) Спасибо
KafDetails.java
final Button save = (Button) findViewById(R.id.save);
save.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
save.setBackgroundDrawable(getResources().getDrawable(R.drawable.ic_zamenasave));
// kafani.get(pozicija).setState(true);
Integer favidk = idk;
String favimek = imek;
String favadresa = adresa;
String favtelbroj = telbroj;
String favemail = email;
String favwebstrana = webstrana;
String favslika = String.valueOf(0);
Double favlon = 0.0;
Double favlat = 0.0;
if (favkafani == null) {
favkafani = new ArrayList<>();
favkafani.add(new FavKaf(favidk, favimek, favadresa, favtelbroj, favemail, favwebstrana, favslika, favlon, favlat));
}
else {
favkafani.add(new FavKaf(favidk, favimek, favadresa, favtelbroj, favemail, favwebstrana, favslika, favlon, favlat));
}
SharedPreferences sharedPreferences = getSharedPreferences("shared preferences", MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
Gson gson = new Gson();
String json = gson.toJson(favkafani);
editor.putString("task list", json);
editor.apply();
}
});
FavKafActivity.java
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.favkafani);
SharedPreferences sharedPreferences = getSharedPreferences("shared preferences", MODE_PRIVATE);
Gson gson = new Gson();
String json = sharedPreferences.getString("task list", null);
Type type = new TypeToken<ArrayList<FavKaf>>() {}.getType();
favkafani = gson.fromJson(json, type);
editText = (EditText) findViewById(R.id.search);
listViewFav = (ListView) findViewById(R.id.flist);
adapter3 = new CustomAdapter3(favkafani, getApplicationContext());
listViewFav.setAdapter(adapter3);
listViewFav.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override...
и моему CustomAdapter3.java
public class CustomAdapter3 extends ArrayAdapter<FavKaf> implements
View.OnClickListener{
private ArrayList<FavKaf> favkafani;
Context mContext;
// View lookup cache
private static class ViewHolder
{
TextView imek;
TextView adresa;
ImageView image;
}
public CustomAdapter3(ArrayList<FavKaf> items, Context context) {
super(context, android.R.layout.activity_list_item, items);
this.favkafani = items;
this.mContext=context;
}
@Override
public void onClick(View v) {
int position=(Integer) v.getTag();
Object object= getItem(position);
FavKaf favkafana = (FavKaf) object;
private int lastPosition = -1;
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// Get the data item for this position
FavKaf favkafana = getItem(position);
// Check if an existing view is being reused, otherwise inflate the view
ViewHolder viewHolder; // view lookup cache stored in tag
final View result;
if (convertView == null) {
viewHolder = new ViewHolder();
LayoutInflater inflater = LayoutInflater.from(getContext());
convertView = inflater.inflate(R.layout.list_item, parent, false);
viewHolder.imek = (TextView) convertView.findViewById(R.id.ime);
viewHolder.adresa = (TextView) convertView.findViewById(R.id.avtor);
viewHolder.image = (ImageView) convertView.findViewById(R.id.listview_image);
result=convertView;
convertView.setTag(viewHolder);
} else {
viewHolder = (ViewHolder) convertView.getTag();
result=convertView;
}
//Animation animation = AnimationUtils.loadAnimation(mContext, (position > lastPosition) ? R.anim.up_from_bottom : R.anim.down_from_top);
//result.startAnimation(animation);
lastPosition = position;
viewHolder.imek.setText(favkafana.getImek());
viewHolder.adresa.setText(favkafana.getAdresa());
//viewHolder.info.setOnClickListener(this);
//viewHolder.info.setTag(position);
// Return the completed view to render on screen
return convertView;
}
}