Skip to content Skip to sidebar Skip to footer

How To Update The Value Of The Textview Inside The Fragment On The Click Of The Button Present In The Adapter Class In Android?

I have two buttons: + and -. I want that when I click on the button +, the value of the textview present in the fragment class (outside the listview) is changed. How can I do this

Solution 1:

In your Adapter class create one interface

Adapter.class

publicclassCartBaseAdapterextendsBaseAdapter {

    private Context mContext;
    private ArrayList<PojoCart> mList;
    private ViewHolder viewHolder;
    private HashMap<String, Integer> mHashMap = newHashMap<String, Integer>();
    private Integer total;
    private DataBaseHandler dbh;
    privateintId=1;
    private String value1, value2;
    privateint z;
    privateFragmentTransactionListenerfragmentTransactionListener= (FragmentTransactionListener) newCart();
    private SendDataToFragment sendDataToFragment;

    publicCartBaseAdapter(FragmentCart fragmentCart, Context mContext, ArrayList<PojoCart> mList) {
        this.mContext = mContext;
        this.mList = mList;
        dbh = newDataBaseHandler(mContext);
        sendDataToFragment = (SendDataToFragment) fragmentCart;

    }

    //Interface to send data from adapter to fragmentpublicinterfaceSendDataToFragment {
        voidsendData(String Data);
    }


    @OverridepublicintgetCount() {
        return mList.size();
    }

    @Overridepublic Object getItem(int position) {
        return mList.get(position);
    }

    @OverridepubliclonggetItemId(int position) {
        return position;
    }


    @Overridepublic View getView(finalint position, View convertView, ViewGroup parent) {
        if (convertView == null) {
            LayoutInflaterinflater= (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            convertView = inflater.inflate(R.layout.cart_item, parent, false);

            viewHolder = newViewHolder();
            viewHolder.mImgItem = (ImageView) convertView.findViewById(R.id.cart_image);
            viewHolder.mTvItemName = (TextView) convertView.findViewById(R.id.tv_item_name);
            viewHolder.mTvItemPrice = (TextView) convertView.findViewById(R.id.tv_item_price);
            viewHolder.mTvNumber = (TextView) convertView.findViewById(R.id.tv_number);
            viewHolder.mBtnAdd = (Button) convertView.findViewById(R.id.btn_add);
            viewHolder.mBtnMinus = (Button) convertView.findViewById(R.id.btn_sub);
            viewHolder.mImgDelete = (ImageView) convertView.findViewById(R.id.img_del);

        } else {
            viewHolder = (ViewHolder) convertView.getTag();
        }


        convertView.setTag(viewHolder);


        finalPojoCartpojoCart= (PojoCart) getItem(position);
        viewHolder.mTvItemName.setText(pojoCart.getmItemName());
        viewHolder.mTvItemPrice.setText(pojoCart.getmItemPrice());


        viewHolder.mImgItem.setImageBitmap(Utility.StringToBitMap(pojoCart.getmItemImage()));
        viewHolder.mBtnAdd.setTag(pojoCart);
        viewHolder.mBtnMinus.setTag(pojoCart);
        viewHolder.mTvItemPrice.setTag(pojoCart);
        viewHolder.mTvNumber.setTag(pojoCart);
        viewHolder.mImgDelete.setTag(position);

        if (pojoCart.getmQuantity() > 0) {

            viewHolder.mTvNumber.setText("" + pojoCart.getmQuantity());

        } else {

            viewHolder.mTvNumber.setText("" + 0);
        }


        viewHolder.mBtnAdd.setOnClickListener(newView.OnClickListener() {
            @OverridepublicvoidonClick(View v) {
                //Send data via interface to your fragment
                sendDataToFragment.sendData("Your Data");

                //Your existing code 
            }
        });

        viewHolder.mBtnMinus.setOnClickListener(newView.OnClickListener() {
            @OverridepublicvoidonClick(View v) {
                //Send data via interface to your fragment
                sendDataToFragment.sendData("Your Data");

                //Your existing code 
            }
        });

        return convertView;
    }


    privateclassViewHolder {

        TextView mTvItemName, mTvItemPrice, mTvNumber;
        ImageView mImgItem, mImgDelete;
        Button mBtnAdd, mBtnMinus;


    }


}

Inside your fragment implement that interface so as soon as your button is clicked in your adapter you will get the data inside your fragment.

Fragment.class

publicclassFragmentCartextendsFragmentimplementsView.OnClickListener, CartBaseAdapter.SendDataToFragment{

    @Nullable@OverridepublicViewonCreateView(LayoutInflater inflater, ViewGroup container,   Bundle savedInstanceState) {
        View rootView = inflater.inflate(R.layout.your_layout, null);
        return rootView;
    }

    @OverridepublicvoidonViewCreated(View view, Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);

        CartBaseAdapter adapter = newCartBaseAdapter(FragmentCart.this, getActivity(), yourList);

    }

    @OverridepublicvoidonClick(View v) {

    }

    @OverridepublicvoidsendData(String Data) {
        //set this data to your textView
    }
}

Solution 2:

Create a interface :

publicinterfaceMyListener {
    // you can define any parameter as per your requirementpublicvoidcallback(View view, intvalue);
}

In your listview adapter use interface like below on click of button + or - like :

MyListener ml;
ml = (MyListener) context;
ml.callback(this, "success");

In activity implements MyListener than callback method override there and than you get performed action from fragment to activity.

Post a Comment for "How To Update The Value Of The Textview Inside The Fragment On The Click Of The Button Present In The Adapter Class In Android?"