i googled and found that custom adapter can solve this, but unable to implement in this code, can any one help me out.
All my grid view is worked in this fragment.
public class HomeFragment extends Fragment {
private HomeViewModel homeViewModel;
private GridView gridView;
String canWaterName[] = {"Bisleri","Aqua Gold","Kinley"};
String canWaterPrice[] = {"Rs 90","Rs 45","Rs 110"};
int canWaterImage[] = {R.drawable.canwater,R.drawable.canwater,R.drawable.canwater};
public View onCreateView(@NonNull LayoutInflater inflater, final ViewGroup container, Bundle savedInstanceState) {
homeViewModel = ViewModelProviders.of(this).get(HomeViewModel.class);
View root = inflater.inflate(R.layout.fragment_home, container, false);
gridView = root.findViewById(R.id.gridview);
CustomAdapter customAdapter = new CustomAdapter();
gridView.setAdapter(customAdapter);
gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
Intent intent = new Intent(getActivity(), OrderSummary.class);
intent.putExtra("name",canWaterName[i]);
intent.putExtra("price",canWaterPrice[i]);
intent.putExtra("image",canWaterImage[i]);
startActivity(intent);
}
});
return root;
}
public class CustomAdapter extends BaseAdapter {
@Override
public int getCount() {
return canWaterImage.length;
}
@Override
public Object getItem(int position) {
return null;
}
@Override
public long getItemId(int position) {
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view1 = getLayoutInflater().inflate(R.layout.row_data,null);
//getting view in row_data
TextView name = view1.findViewById(R.id.canwaterName);
TextView price = view1.findViewById(R.id.canwaterPrice);
ImageView image = view1.findViewById(R.id.images);
Button buy = view1.findViewById(R.id.buyButton);
buy.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
}
});
name.setText(canWaterName[position]);
price.setText(canWaterPrice[position]);
image.setImageResource(canWaterImage[position]);
return view1;
}
}
}
fragment_Home.xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">
<GridView
android:id="@+id/gridview"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/gridBackground"
android:paddingLeft="10dp"
android:paddingRight="10dp"
android:paddingTop="20dp"
android:paddingBottom="20dp"
android:horizontalSpacing="10dp"
android:verticalSpacing="15dp"
android:clickable="true"
android:numColumns="2"
app:layout_constraintBottom_toBottomOf="parent"></GridView>
</androidx.constraintlayout.widget.ConstraintLayout>
This is my grid view template.
row_data.xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/gridviewdata"
android:layout_width="wrap_content"
android:background="#fff"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:elevation="5dp"
android:clickable="false"
android:focusable="false"
android:focusableInTouchMode="false"
android:layout_height="wrap_content">
<TextView
android:id="@+id/canwaterName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Bisleri"
android:textSize="14dp"
android:textStyle="normal"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.456"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/images"
android:layout_marginTop="5dp" />
<TextView
android:id="@+id/canwaterPrice"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
android:text="Rs 90"
android:textSize="14dp"
android:textStyle="bold"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.463"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/canwaterName" />
<ImageView
android:id="@+id/images"
android:layout_width="140dp"
android:layout_height="140dp"
android:src="@drawable/canwater"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.46"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<Button
android:id="@+id/buyButton"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_marginTop="10dp"
android:layout_marginBottom="10dp"
android:background="@color/colorPrimary"
android:text="BUY"
android:textColor="@color/white"
android:textSize="14sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHeight_percent="0.14"
app:layout_constraintHorizontal_bias="0.46"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/canwaterPrice"
app:layout_constraintVertical_bias="0.0"
app:layout_constraintWidth_percent="0.45" />
</androidx.constraintlayout.widget.ConstraintLayout>
I want to send data to this activity on button click which is present inside a grid view.
activity_ordered_summary.xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".OrderSummary">
<ImageView
android:id="@+id/canWaterOrder"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:srcCompat="@drawable/canwater" />
<TextView
android:id="@+id/canWaterNameOrder"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="50dp"
android:text="Bisleri"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/canWaterOrder" />
<TextView
android:id="@+id/canWaterPriceOrder"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="50dp"
android:layout_marginBottom="120dp"
android:text="Rs 90"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.485"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/canWaterNameOrder"
app:layout_constraintVertical_bias="0.29000002" />
</androidx.constraintlayout.widget.ConstraintLayout>
OrderedSummary.java
public class OrderSummary extends AppCompatActivity {
TextView canWaterName,canWaterPrice;
ImageView image;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_order_summary);
canWaterName = findViewById(R.id.canWaterNameOrder);
canWaterPrice = findViewById(R.id.canWaterPriceOrder);
image = findViewById(R.id.canWaterOrder);
Intent intent = getIntent();
canWaterName.setText(intent.getStringExtra("name"));
canWaterPrice.setText(intent.getStringExtra("price"));
image.setImageResource(intent.getIntExtra("image",0));
}
gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l)
{
if(view.getId() == R.id.buyButton) {
Intent intent = new Intent(getActivity(), OrderSummary.class);
intent.putExtra("name", canWaterName[i]);
intent.putExtra("price", canWaterPrice[i]);
intent.putExtra("image", canWaterImage[i]);
startActivity(intent);
}
}
});
inside custom adapter
@Override
public View getView(final int position, View convertView, final ViewGroup parent) {
View view1 = getLayoutInflater().inflate(R.layout.row_data,null);
//getting view in row_data
final TextView name = view1.findViewById(R.id.canwaterName);
final TextView price = view1.findViewById(R.id.canwaterPrice);
final ImageView image = view1.findViewById(R.id.images);
name.setText(canWaterName[position]);
price.setText(canWaterPrice[position]);
image.setImageResource(canWaterImage[position]);
final Button buy = view1.findViewById(R.id.buyButton);
buy.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
((GridView)parent).performItemClick(v,position,0);
}
});
return view1;
}