I currently have a Fragment with an ImageButton that open up a DialogFragment. This DialogFragment is a custom list using an adapter where each entry has an ImageView and TextView.
Is it possible to return the "src" of the ImageView of the selected item to the Fragment that opened the DialogFragment? I need to change the src of the ImageButton to the selected image.
My main Fragment calling the DialogFragment:
ImageButton starter = (ImageButton) myView.findViewById(R.id.imageStarterItem);
starter.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
//Here
ItemPhysStarterFragment dialog = ItemPhysStarterFragment.newInstance();
dialog.show(getFragmentManager(), "fragmentDialog");
}
});
My DialogFragment class containing the ListView:
public class ItemPhysStarterFragment extends DialogFragment {
Button btn;
ListView lv;
SearchView sv;
ArrayAdapter<String> adapter;
String[] names={"Bumba's Mask", "Rangda's Mask", "Bluestone Pendant", "Death's Toll",
"Mark of the Vanguard", "Swift Wing", "War Flag", "Watcher's Gift"};
int[] images={R.drawable.bumbas_mask, R.drawable.rangdas_mask, R.drawable.bluestone_pendant, R.drawable.deaths_toll,
R.drawable.mark_of_the_vanguard, R.drawable.swift_wing, R.drawable.war_flag, R.drawable.watchers_gift};
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View myView=inflater.inflate(R.layout.item_list, null);
//SET TITLE DIALOG TITLE
getDialog().setTitle("Starter Items");
//BUTTON,LISTVIEW,SEARCHVIEW INITIALIZATIONS
lv=(ListView) myView.findViewById(R.id.listView1);
sv=(SearchView) myView.findViewById(R.id.searchView1);
btn=(Button) myView.findViewById(R.id.dismiss);
//CREATE AND SET ADAPTER TO LISTVIEW
final Adapter adapter = new Adapter(getActivity(), this.getItems());
lv.setAdapter(adapter);
//SEARCH
sv.setQueryHint("Search starter items..");
sv.setOnQueryTextListener(new OnQueryTextListener() {
public boolean onQueryTextSubmit(String txt) {
return false;
}
public boolean onQueryTextChange(String txt) {
adapter.getFilter().filter(txt);
return false;
}
});
//BUTTON
btn.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {
dismiss();
}
});
return myView;
}
public static ItemPhysStarterFragment newInstance(){
ItemPhysStarterFragment f = new ItemPhysStarterFragment();
return f;
}
private ArrayList<Item> getItems() {
ArrayList<Item> items = new ArrayList<Item>();
Item item;
for(int i = 0; i < names.length; i++)
{
item = new Item(names[i], images[i]);
items.add(item);
}
return items;
}
}
Create an interface first
public interface OnListItemClickedListener {
void onListItemClick(int resourceId);
}
Create setter for interface
public class ItemPhysStarterFragment extends DialogFragment {
OnListItemClickedListener mListener;
public void setOnListItemSelectedListener(OnListItemClickedListener listener) {
this.mListener = listener;
}
}
Now set Listener to your fragment
ItemPhysStarterFragment dialog = ItemPhysStarterFragment.newInstance();
dialog.setOnListItemSelectedListener(new OnListItemClickedListener() {
@Override
public void onListItemClick(int resourceId) {
// User your resourceId
}
});
dialog.show(getFragmentManager(), "fragmentDialog");
Final step, trigger listener in your ItemPhysStarterFragment
fragment's ListItemClick() -
...public void onListItemClick(int resourceId) {
mListener.onListItemClick(pass your resource id);
}