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?"