Jetzt mal nur um Klarheit zu schaffen So sieht mein Adapter aus:
public class SwipeAdapter extends PagerAdapter {
/*
Define the image resources for our image fragment
*/
private int[] image_resources = {
R.drawable.island_1,
R.drawable.island_2,
R.drawable.island_3,
R.drawable.island_4,
R.drawable.island_5,
R.drawable.island_6,
R.drawable.island_7,
R.drawable.island_8,
R.drawable.island_9,
R.drawable.island_10
};
private Context context;
private LayoutInflater layoutInflater;
public SwipeAdapter(Context context) {
this.context = context;
}
/*
Count the images in image_resources array
*/
@Override
public int getCount() {
return image_resources.length;
}
@Override
public boolean isViewFromObject(View view, Object object) {
return (view == (LinearLayout) object);
}
/*
Create the page for the given position
Set image resources and text about current position
*/
@Override
public Object instantiateItem(ViewGroup container, int position) {
layoutInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View item_view = layoutInflater.inflate(R.layout.swipe_layout,container,false);
ImageView imageView = (ImageView) item_view.findViewById(R.id.swipe_image);
TextView textView = (TextView) item_view.findViewById(R.id.image_count);
ImageButton imageButton = (ImageButton) item_view.findViewById(R.id.favourite_button);
imageView.setImageResource(image_resources[position]);
textView.setText("["+(position+1)+"/10]");
SharedPreferences prefs = context.getSharedPreferences("favInfo", Context.MODE_PRIVATE);
// get the unique key consisting of fav and the current item position
String key = "fav" + (position+1);
imageButton.setTag(position+1);
String value = prefs.getString(key, "0");
// check if value of favorite key is 0
// set image resource dependent on what value is set
if (value.equals("1")) {
imageButton.setImageResource(R.drawable.heart_red);
} else {
imageButton.setImageResource(R.drawable.heart);
}
container.addView(item_view);
return item_view;
}
/*
Remove a page for the given position
*/
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView((LinearLayout) object);
}
}
Ist jetzt nicht alles relevant für die Problemstellung hier, aber bevor ich mich da nochmal verplapper Die aktuelle Position bekomm ich in der Main Activity dann wieder über imageButton.getTag()-1 (so in der Art), das klappt auf jeden Fall.
In meinen SharedPreferences gibt es insgesamt 10 keys fav1 bis fav10 mit den values 0 oder 1. Ich müsste dann die items rausfiltern, die ein value von 1 hinterlegt haben und nur die anzeigen.
Empfohlener redaktioneller Inhalt
Mit Deiner Zustimmung wird hier ein externer Inhalt geladen.
Mit Klick auf den oben stehenden Button erklärst Du Dich damit einverstanden, dass Dir externe Inhalte angezeigt werden dürfen. Dabei können personenbezogene Daten an Drittanbieter übermittelt werden. Mehr Infos dazu findest Du in unserer Datenschutzerklärung.