У меня есть вид сетки во фрагменте и всплывающее окно, открытое при щелчке.Как я могу передать те же данные (изображение, заголовок, описание) во всплывающее окно?
GridView и код PopupWindow (во фрагменте)
GridView gridView = myFragment.findViewById(R.id.gridview);
final AchievementsAdapter achievementsAdapter = new AchievementsAdapter(getActivity(), books);
gridView.setAdapter(achievementsAdapter);
gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Achievement achievement = (Achievement) parent.getItemAtPosition(position);
showPopup(view);
}
});
public void showPopup(View anchorView) {
View popupView = getLayoutInflater().inflate(R.layout.achievement_details, null);
ImageView close_window = popupView.findViewById(R.id.close_button);
final PopupWindow popupWindow = new PopupWindow(popupView,
ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
// Example: If you have a TextView inside `popup_layout.xml`
TextView tv = popupView.findViewById(R.id.title);
tv.setText("Badge Title");
// If the PopupWindow should be focusable
popupWindow.setFocusable(true);
// If you need the PopupWindow to dismiss when when touched outside
int location[] = new int[2];
// Get the View's(the one that was clicked in the Fragment) location
anchorView.getLocationOnScreen(location);
// Using location, the PopupWindow will be displayed right under anchorView
popupWindow.showAtLocation(anchorView, Gravity.CENTER,
location[0], location[0] + anchorView.getHeight());
View.OnClickListener cancel_button_click_listener = new View.OnClickListener() {
public void onClick(View v) {
popupWindow.dismiss();
}
};
close_window.setOnClickListener(cancel_button_click_listener);
}
Модель достижений
public class Achievement {
private final int name;
private final int author;
private final int imageResource;
private boolean isFavorite = false;
private final String imageUrl;
public Achievement(int name, int author, int imageResource, String imageUrl) {
this.name = name;
this.author = author;
this.imageResource = imageResource;
this.imageUrl = imageUrl;
}
public int getName() {
return name;
}
public int getAuthor() {
return author;
}
public int getImageResource() {
return imageResource;
}
public boolean getIsFavorite() {
return isFavorite;
}
public void setIsFavorite(boolean isFavorite) {
this.isFavorite = isFavorite;
}
public void toggleFavorite() {
isFavorite = !isFavorite;
}
public String getImageUrl() {
return imageUrl;
}
Я пытался с намерением (вероятно, не работает).Я попытался с положенным дополнительным, но поскольку я не слишком хорош в этом, не справился с этим.Один из способов, который я подумал - сделать всплывающее окно новым действием, а затем передать данные с намерением, но если есть способ (я надеюсь, что есть), я бы предпочел передать значения во фрагменте как есть.
Если вам понадобится больше кода, пожалуйста, сообщите мне.