从适配器类访问工具栏项目



我正在工作一个购物车应用程序。我使用带有TextView和ImageView的Cutom工具栏(Actionbar)活动。在活动中,我有简单的listView显示产品列表。并具有用于活动列表视图的适配器类。在这里,我希望从Add( )按钮的适配器类OnClick事件中,我想更改TextView值作为我的工具栏中的产品数量的总数。

[我想要这样的东西]

https://drive.google.com/file/d/0b9qgugnyvgriv2zrvlp3tulim3m/view

我可以在活动中实现它,但不知道如何从适配器类获得此功能。https://drive.google.com/open?id=0b9qgugnyvgriuzf3c0hiefplvtq

这是我的代码

适配器代码

public class Product_List_Adapter extends BaseAdapter {
Context acontext;
String[] aproductname;
String[] aproduct_unit;
String[] aproduct_discount;
String[] aproduct_previous_price;
String[] aproduct_latest_price;
int[] aproduct_img;
int totalunit=0;
int[] acoupencode;
String product_count;
private static LayoutInflater inflater=null;
public Product_List_Adapter(Context context,String[]productname,String[]product_unit,String[]product_discount,String[]product_previous_price,String[]product_latest_price,int[]product_img,int[] coupencode)
{
    acontext=context;
    aproductname=productname;
    aproduct_unit=product_unit;
    aproduct_discount=product_discount;
    aproduct_previous_price=product_previous_price;
    aproduct_latest_price=product_latest_price;
    aproduct_img=product_img;
    acoupencode=coupencode;
    inflater = ( LayoutInflater )context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
@Override
public int getCount() {
    return aproductname.length;
}
@Override
public Object getItem(int position) {
    return position;
}
@Override
public long getItemId(int position) {
    return position;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
  final  Holder  holder=new Holder();
    View rowView;
    rowView = inflater.inflate(R.layout.productlist_listview_single_row, null);
    View toolbaritme;
    toolbaritme = inflater.inflate(R.layout.productlist_listview_single_row, null);

    holder.productname =(TextView) rowView.findViewById(R.id.productlist_singlerow_product_title);
    holder.product_unit =(TextView) rowView.findViewById(R.id.productlist_singlerow_product_unit);
    holder.product_discount =(TextView) rowView.findViewById(R.id.productlist_singlerow_product_discount);
    holder.product_previous_price =(TextView) rowView.findViewById(R.id.productlist_singlerow_previous_price);
    holder.product_latest_price =(TextView) rowView.findViewById(R.id.productlist_singlerow_latest_price);
    holder.product_count=(TextView)rowView.findViewById(R.id.product_count);
    holder.product_img=(ImageView) rowView.findViewById(R.id.productlist_singlerow_imgevew);
    holder.btn_add=(ImageView)rowView.findViewById(R.id.product_list_singlerow_btn_add);
    holder.btn_remove=(ImageView)rowView.findViewById(R.id.product_list_singlerow_btn_remove);
    holder.itemcount=(TextView)toolbaritme.findViewById(R.id.itemcount_actionbar);
    holder.layout_product_discount =(LinearLayout)rowView.findViewById(R.id.layout_product_discount);
    holder.productname.setText(aproductname[position]);
    holder.product_unit.setText(aproduct_unit[position]);
    holder.product_discount.setText(aproduct_discount[position]);
    holder.product_previous_price.setText(aproduct_previous_price[position]);
    holder.product_latest_price.setText(aproduct_latest_price[position]);
    holder.product_img.setImageResource(aproduct_img[position]);
    holder.product_previous_price.setPaintFlags(holder.product_previous_price.getPaintFlags() | Paint.STRIKE_THRU_TEXT_FLAG);
    holder.btn_add.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            totalunit +=1;
            product_count=Integer.toString(totalunit);
            holder.product_count.setText(product_count);
            holder.itemcount.setText(product_count);
            if(holder.product_count.equals("0"))
            {
                holder.product_count.setText("");
            }
        }
    });
    holder.btn_remove.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v)
        {
                    if(totalunit==0)
                    {
                        Toast.makeText(acontext, "no item in cart ", Toast.LENGTH_SHORT).show();
                        holder.product_count.setText("");
                    }
                    else
                    {
                        totalunit -=1;
                        product_count=Integer.toString(totalunit);
                        holder.product_count.setText(product_count);
                    }
            if(holder.product_count.equals("0"))
            {
                holder.product_count.setText("");
            }
        }
    });
    rowView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            Toast.makeText(acontext, "You Clicked "+aproductname[position], Toast.LENGTH_LONG).show();
        }
    });

    if(acoupencode[position]==0)
    {
       holder.layout_product_discount.setVisibility(View.GONE);
    }
    else
    {
        holder.layout_product_discount.setVisibility(View.VISIBLE);
    }

    holder.product_img.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent myint =new Intent(acontext.getApplicationContext(), Product_view.class);
            acontext.startActivity(myint);
        }
    });
    return rowView;
}
public class Holder
{
    TextView productname,product_unit,product_discount,product_previous_price,product_latest_price,product_count,itemcount;
    ImageView product_img,btn_add,btn_remove;
    LinearLayout layout_product_discount;
}

}

帮助会很感激,

预先感谢

使用接口作为回调

public interface Callback
{
    public void onAddClick(int totalunitcount);
} 

在适配器中

private Callback listener;
   public void setListener(Callback listener)    {
    this.listener = listener;
}

in addClick

  holder.btn_add.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        totalunit +=1;
        product_count=Integer.toString(totalunit);
        holder.product_count.setText(product_count);
        holder.itemcount.setText(product_count);
        if(holder.product_count.equals("0"))
        {
            holder.product_count.setText("");
        }
       // here
       if(listener!=null)
       {
          listener.onAddClick(totalunit); 
       }
    }
});

在活动中

 public yourActivity implements Callback
 {
  @Override
  public void onAddClick(int totalunitcount)
  {
     // update toolbar
  } 
 }

当然,将侦听器设置为Activity in Activity

adapter.setListener(youractivityname.this);
override fun onViewCreated(view: View?, savedInstanceState: Bundle?) {
    super.onViewCreated(view, savedInstanceState)
    //you can set the title for your toolbar here for different fragments different titles
    activity.title = "Home"
}