I have a listview that I implemented in a fragment. I want to make the transition to the details fragment at the moment where I click on one item and I want to display the details in the other fragment where i have one imageview for that image and 3 textview for name,price and details. I have tried several variants, but they do not succeed. thanks a lot
items.java
public class items {
// Name of the object
private String lName;
// Costs
private String lPrice;
// Details
private String lDetails;
// Image resource id
private int lImageId;
// Constructor
public items(String ObjectName,String ObjectPrice,int ImageResourceId,String DetailsItem){
lName=ObjectName;
lPrice=ObjectPrice;
lImageId=ImageResourceId;
lDetails=DetailsItem;
}
// Getters
public String getlName() { return lName; }
public String getlPrice(){ return lPrice; }
public int getlImageId(){ return lImageId; }
public String getlDetails() { return lDetails; }
}
itemsAdapter.java
public class itemsAdapter extends ArrayAdapter<items>{
private static final String LOG_TAG = itemsAdapter.class.getSimpleName();
/**
* This is our own custom constructor (it doesn't mirror a superclass constructor).
* The context is used to inflate the layout file, and the list is the data we want
* to populate into the lists.
*/
public itemsAdapter(Activity context, ArrayList<items> item){
super(context,0,item);
}
//Provides a view for an AdapterView (ListView, GridView, etc.)
public View getView(int position, View convertView, ViewGroup parent){
// Check if the existing view is being reused, otherwise inflate the view
View listItemView = convertView;
if(listItemView == null) {
listItemView = LayoutInflater.from(getContext()).inflate(
R.layout.list_item, parent, false);
}
// Get the object located at this posiiton in the list
items currentItems=getItem(position);
// Find the TextView in the list_item.xml layout with the id name_items
TextView nameTextView=(TextView)listItemView.findViewById(R.id.name_item);
// Get the name from the current items object and set this text on the name TextView
nameTextView.setText(currentItems.getlName());
// Find the TextView in the list_item.xml layout with the id price_items
TextView priceTextView=(TextView)listItemView.findViewById(R.id.price_item);
// Get the price from the current items object and set this text on the price TextView
priceTextView.setText(currentItems.getlPrice());
// Find the ImageView in the list_item.xml layout with the id icon_item
ImageView iconImageView=(ImageView)listItemView.findViewById(R.id.icon_item);
// Get the image from the current items object and set this image on the image view
iconImageView.setImageResource(currentItems.getlImageId());
// Find the TextView in the list_item.xml layout with the id details_item
TextView detailsView=(TextView)listItemView.findViewById(R.id.details_item);
// Get the details from the current items object and set this text on the details TextView
detailsView.setText(currentItems.getlDetails());
return listItemView;
}
}
list_item.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:minHeight="?android:attr/listPreferredItemHeight"
android:orientation="horizontal"
android:padding="16dp">
<ImageView
android:id="@+id/icon_item"
android:layout_width="100dp"
android:layout_height="80dp" />
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:orientation="vertical"
android:paddingLeft="16dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Name"
android:textStyle="bold" />
<TextView
android:id="@+id/name_item"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Price"
android:textStyle="bold" />
<TextView
android:id="@+id/price_item"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:orientation="vertical"
>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Details"
android:textStyle="bold" />
<TextView
android:id="@+id/details_item"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
</LinearLayout>
beds_fragment.xml
<ListView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/listview_beds"
android:layout_width="match_parent"
android:layout_height="500dp"
android:layout_gravity="bottom"
android:background="#e3e3e3"
/>
bedsFragment.java
public class bedsFragment extends Fragment {
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.beds_fragment, container, false);
// Create an ArrayList of items objects
ArrayList<items> beds=new ArrayList<items>();
beds.add(new items("Bed1","23$",R.drawable.bed1,"Beds for sleeping well, best buy if you want to sleep."));
beds.add(new items("Bed2","43$",R.drawable.bed2,"Beds for sleeping well, best buy if you want to sleep."));
beds.add(new items("Bed3","54$",R.drawable.bed3,"Beds for sleeping well, best buy if you want to sleep."));
beds.add(new items("Bed4","34$",R.drawable.bed4,"Beds for sleeping well, best buy if you want to sleep."));
beds.add(new items("Bed5","65$",R.drawable.bed5,"Beds for sleeping well, best buy if you want to sleep."));
// Create an {@link itemsAdapter}, whose data source is a list of {@items}. The adapter
// know how to create a list item views for each item in the list
itemsAdapter itAdapter=new itemsAdapter(this.getActivity(),beds);
// Get a reference to the ListView, and attach the adapter to the listView
ListView listView=(ListView)view.findViewById(R.id.listview_beds);
listView.setAdapter(itAdapter);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
FragmentTransaction fragmentTransaction = getFragmentManager().beginTransaction();
fragmentTransaction.replace(R.id.listview_beds, new storeFragment());
fragmentTransaction.addToBackStack(null).commit();
}
});
return view;
}
}
detailsFragment.java
public class detailsFragment extends Fragment {
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.details_fragment, container, false);
return view;
}
}
Hi you can use below code.
first of all one interface create into adapter class and First Fragment implement interface.
interface have one callback method. so when user click list item,then below method
@override callback(){
}
into first-fragment.
inside callback method below transition code right.
FragmentTransaction fragmentTransaction = getSupportFragmentManager()
.beginTransaction();
Fragment profileFragment = new MovieDetailFragment();//the fragment you want to show
profileFragment.setArguments(bundle);
fragmentTransaction
.replace(R.id.content_frame, profileFragment);//R.id.content_frame is the layout you want to replace
fragmentTransaction.addToBackStack(null);
fragmentTransaction.commit();
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.