2

I am trying to make an app for my restaurant, here is my previous question regarding the issue which I have faced and it was resolved, however, there is some button which you will notice in the ChildView which is "Add" here is the like for my previous query here

You can see that I have "Add" Button there where is I click I want my relative layout to be displayed, however, here is some catch is that I have used the custom expandableListView which is this:

class NonScrollExpandableListView : ExpandableListView {

constructor(context: Context) : super(context) {}

constructor(context: Context, attrs: AttributeSet) : super(context, attrs) {}

constructor(context: Context, attrs: AttributeSet, defStyle: Int) : super(context, attrs, defStyle) {}

override fun setAdapter(adapter: ExpandableListAdapter?) {
    super.setAdapter(adapter)
}

override fun setOnChildClickListener(onChildClickListener: OnChildClickListener) {
    super.setOnChildClickListener(onChildClickListener)
}

override fun expandGroup(groupPos: Int) : Boolean {
    return super.expandGroup(groupPos)
}

override fun expandGroup(groupPos: Int, animate: Boolean) : Boolean {
    return super.expandGroup(groupPos, animate)
}

override fun isGroupExpanded(groupPosition: Int): Boolean {
    return super.isGroupExpanded(groupPosition)
}

public override fun onMeasure(widthMeasureSpec: Int, heightMeasureSpec: Int) {
    val heightMeasureSpec_custom = MeasureSpec.makeMeasureSpec(
            Integer.MAX_VALUE shr 2, MeasureSpec.AT_MOST)
    super.onMeasure(widthMeasureSpec, heightMeasureSpec_custom)
    val params = layoutParams
    params.height = measuredHeight
 }
}

Which is not scrollable listView.

this is my XML Code:

<RelativeLayout 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="wrap_content"
android:layout_marginBottom="30dp"
android:orientation="horizontal">

<androidx.cardview.widget.CardView
    android:layout_width="95dp"
    android:layout_height="100dp"
    android:baselineAligned="false"
    android:layout_marginStart="10dp"
    android:layout_marginTop="10dp"
    app:cardBackgroundColor="#FF682F"
    android:layout_marginBottom="20dp"
    app:cardCornerRadius="13dp">

    <ImageView
        android:id="@+id/Restaurant_Image_List"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:scaleType="centerCrop"
        android:layout_marginStart=".5dp"
        android:layout_marginEnd=".5dp"
        android:layout_marginTop=".5dp"
        android:layout_marginBottom=".5dp"
        />

</androidx.cardview.widget.CardView>

<androidx.cardview.widget.CardView
    android:id="@+id/ClickAddToCart"
    android:layout_width="80dp"
    android:layout_height="25dp"
    android:layout_marginTop="93dp"
    android:layout_marginStart="16.5dp"
    android:layout_marginBottom="5dp"
    android:layout_marginEnd="5dp"
    app:cardCornerRadius="3dp">

    <Button
        android:id="@+id/RestaurantAddItem"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:textColor="#FFCE55"
        android:background="?attr/selectableItemBackground"
        android:text="ADD"
        android:textStyle="bold"/>

</androidx.cardview.widget.CardView>

<TextView
    android:id="@+id/RestaurantItemAvailability"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:visibility="visible"
    android:text="Available"
    android:layout_alignParentEnd="true"
    android:layout_marginTop="50dp"
    android:layout_marginEnd="20dp"/>

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <RelativeLayout
        android:layout_marginStart="100dp"
        android:layout_marginTop="10dp"
        android:layout_width="wrap_content"
        android:layout_height="100dp">

        <TextView
            android:id="@+id/RestaurantItemName"
            android:layout_marginTop="8dp"
            android:layout_marginStart="20dp"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textStyle="bold"
            android:textSize="16sp"
            android:text="Item Name"/>

        <TextView
            android:id="@+id/RestaurantItemPrice"
            android:layout_marginTop="10dp"
            android:layout_marginStart="20dp"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:layout_marginBottom="15dp"
            android:textStyle="bold"
            android:text="Price"/>

    </RelativeLayout>

</LinearLayout>

<RelativeLayout
    android:id="@+id/ClickAddToCart2"
    android:visibility="invisible"
    android:layout_marginTop="10dp"
    android:layout_marginEnd="10dp"
    android:layout_width="match_parent"
    android:layout_height="100dp">

    <ImageButton
        android:id="@+id/ButtonPlus"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="8dp"
        android:background="?attr/selectableItemBackground"
        app:srcCompat="@drawable/ic_plus"
        android:layout_alignParentEnd="true"
        android:layout_marginEnd="85dp"/>

    <ImageButton
        android:id="@+id/ButtonMinus"
        android:layout_width="16dp"
        android:layout_height="1dp"
        android:layout_marginTop="17dp"
        android:gravity="center"
        android:background="?attr/selectableItemBackground"
        app:srcCompat="@drawable/ic_minus"
        android:layout_alignParentEnd="true"
        android:layout_marginEnd="15dp"/>

    <TextView
        android:id="@+id/NumberOfItemAdded"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="1"
        android:textSize="30sp"
        android:layout_alignParentEnd="true"
        android:layout_marginEnd="50dp"
        android:layout_marginTop="20dp"/>

    <androidx.cardview.widget.CardView
        android:layout_width="70dp"
        android:layout_height="20dp"
        android:layout_marginTop="70dp"
        android:layout_alignParentEnd="true"
        android:layout_marginEnd="24dp"
        app:cardCornerRadius="3dp">

        <Button
            android:id="@+id/RestaurantAddItem2"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:text="Add"
            android:textSize="10sp"
            android:textColor="#FFCE55"
            android:background="?attr/selectableItemBackground"
            tools:ignore="SmallSp" />


    </androidx.cardview.widget.CardView>
</RelativeLayout>

Code for my getChildView:

 @Override
public View getChildView(final int groupPosition, final int childPosition, boolean isLastChild, View convertView, ViewGroup parent) {
    convertView = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_for_restaurant, parent, false);

    restaurantItemName = convertView.findViewById(R.id.RestaurantItemName);
    restaurantItemPrice = convertView.findViewById(R.id.RestaurantItemPrice);
    restaurantItemAvailability = convertView.findViewById(R.id.RestaurantItemAvailability);
    restaurantAddItem = convertView.findViewById(R.id.RestaurantAddItem);
    restaurantAddItem2 = convertView.findViewById(R.id.RestaurantAddItem2);
    restaurant_Image_List = convertView.findViewById(R.id.Restaurant_Image_List);
    buttonPlus = convertView.findViewById(R.id.ButtonPlus);
    buttonMinus = convertView.findViewById(R.id.ButtonMinus);
    clickAddToCart2 = convertView.findViewById(R.id.ClickAddToCart2);
    clickToAddCart = convertView.findViewById(R.id.ClickAddToCart);

    Glide.with(context).load(objectMap.get(headerList.get(groupPosition)).get(childPosition).getITEM_IMAGE()).error(R.drawable.googleg_standard_color_18).into(restaurant_Image_List);
    restaurantItemName.setText(objectMap.get(headerList.get(groupPosition)).get(childPosition).getITEM_NAME());
    restaurantItemPrice.setText("₹ " + objectMap.get(headerList.get(groupPosition)).get(childPosition).getITEM_PRICE());

    if (objectMap.get(headerList.get(groupPosition)).get(childPosition).getAVAILABILITY().equals("false")) {
        restaurantItemAvailability.setText("Unavailable");
        restaurantItemAvailability.setTextColor(Color.parseColor("#FF3600"));
    } else {
        restaurantItemAvailability.setText("Available");
        restaurantItemAvailability.setTextColor(Color.parseColor("#95C869"));
    }

    restaurantAddItem.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if (objectMap.get(headerList.get(groupPosition)).get(childPosition).getAVAILABILITY().equals("false")){
                Toast.makeText(context, objectMap.get(headerList.get(groupPosition)).get(childPosition).getITEM_NAME()+
                        " is currently unavailable", Toast.LENGTH_SHORT).show();
            }else{
                restaurantItemAvailability.setVisibility(View.GONE);
                clickToAddCart.setVisibility(View.GONE);
                clickAddToCart2.setVisibility(View.VISIBLE);
            }
        }
    });

    return convertView;
}

here when I click the "ADD" button I want the below code to be execute:

                restaurantItemAvailability.setVisibility(View.GONE);
                clickToAddCart.setVisibility(View.GONE);
                clickAddToCart2.setVisibility(View.VISIBLE);

the click listener for Add is working fine because I have used the Toast to check whether it was working fine or not, and it executed the Toast perfectly, however, the above code doesn't get executed, and I don't know why. Can anyone help me out?

Thank you in advance.

Athos Tokbi
  • 195
  • 1
  • 17
  • @V-rundPuro-hit can you please check my code where I am doing it wrong because I am using the code which you have referred in the older post of 2016. – Athos Tokbi Aug 28 '20 at 19:01
  • Share your complete code. Where is this `onClickListener` of `addButton`, `ListView's` adapter? – Lalit Fauzdar Aug 28 '20 at 20:34
  • @LalitFauzdar I have added the getChildView. The if parts get executed and the else part is also working but doesn't get executed. – Athos Tokbi Aug 29 '20 at 06:14
  • But the above code is in the `else` statement. How will it get executed if you can see the `Toast`? If you want to execute the code then put it in the `if { }` and remove the `else`. If the `if` condition is always true then `else` statement won't be executed, basic principle of `if else`. – Lalit Fauzdar Aug 29 '20 at 20:49
  • @AthosTokbi, I went through your code , and according to your explanation I see that the else part is working but the code is not executing which you meant is that the action is not taking place when you were testing the app, however in the other conditions the Toast part is working fine. Right??? – Wade Aug 30 '20 at 10:35
  • Those should be local for every item, so try: `restaurantItemAvailability = convertView.findViewById(R.id.RestaurantItemAvailability);` to `final TextView restaurantItemAvailability = convertView.findViewById(R.id.RestaurantItemAvailability);`, `clickToAddCart = convertView.findViewById(R.id.ClickAddToCart);` to `final CardView clickToAddCart = convertView.findViewById(R.id.ClickAddToCart);`, `clickAddToCart2 = convertView.findViewById(R.id.ClickAddToCart2);` to `final RelativeLayout clickAddToCart2 = convertView.findViewById(R.id.ClickAddToCart2);`. – i_A_mok Sep 02 '20 at 12:34

1 Answers1

1

I have finally resolved the issue by using another constant where I save the click value and check the value and used it in conditional statements and the issue was resolve.

Athos Tokbi
  • 195
  • 1
  • 17