通过Intent将递增的计数器传递给其他Activity

时间:2016-05-19 05:51:20

标签: android android-studio android-intent

我正在使用我使用我的计数器的自定义适配器。查看代码。在计数器中我添加了一个TextView来显示,两个按钮来添加或删除。 您可以弄清楚我正在尝试设计典型的购物车:您可以在哪里添加或删除商品。请检查以下代码

public class MyCustom extends BaseAdapter{


static class ViewHolder{
    TextView tv1_price,tv2_cgory,tv3_prod,tv4_clog;
    TextView tv6_counter;
    ImageView imv1,imv2;
    Button btn2Minus,btn3Plus;
    public int count=0;

}

private Context context;
private static LayoutInflater layoutInflater=null;
String price[],categoryName[],productName[],catalogName[];

public MyCustom(Context context,String price[],String categoryName[],String productName[],String catalogName[]){
    this.context=context;
    this.price=price;
    this.categoryName=categoryName;
    this.productName=productName;
    this.catalogName=catalogName;
}


@Override
public int getCount() {
    return catalogName.length;
}

@Override
public Object getItem(int position) {
    return position;
}

@Override
public long getItemId(int position) {
    return position;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {

    View v=convertView;
    final ViewHolder viewHolder;

    if(v==null){
        layoutInflater=(LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        v=layoutInflater.inflate(R.layout.mycustom,parent,false);

        viewHolder=new ViewHolder();
        viewHolder.tv1_price=(TextView)v.findViewById(R.id.textView);
        viewHolder.tv2_cgory=(TextView)v.findViewById(R.id.textView2);
        viewHolder.tv3_prod=(TextView)v.findViewById(R.id.textView3);
        viewHolder.tv4_clog=(TextView)v.findViewById(R.id.textView4);
        viewHolder.imv1=(ImageView) v.findViewById(R.id.imageView);
        viewHolder.imv2=(ImageView) v.findViewById(R.id.imageView2);
        viewHolder.tv6_counter=(TextView)v.findViewById(R.id.textView6);
        viewHolder.btn2Minus=(Button)v.findViewById(R.id.button2);
        viewHolder.btn3Plus=(Button)v.findViewById(R.id.button3);
        v.setTag(viewHolder);

    }

    else {
        viewHolder=(ViewHolder)v.getTag();
    }
    viewHolder.tv1_price.setText(price[position]);
    viewHolder.tv2_cgory.setText(categoryName[position]);
    viewHolder.tv3_prod.setText(productName[position]);
    viewHolder.tv4_clog.setText(catalogName[position]);



    viewHolder.imv2.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Toast.makeText(v.getContext(), "Wait.......Checking Out", Toast.LENGTH_SHORT).show();

            context.startActivity(new Intent(context,ShoppingCart.class).setFlags(Intent.FLAG_ACTIVITY_NEW_TASK)) ;
        }
    });

    viewHolder.btn3Plus.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            viewHolder.count++;
            viewHolder.tv6_counter.setText(String.valueOf(viewHolder.count));

        }
    });

    viewHolder.btn2Minus.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            if(viewHolder.count>0) {
                viewHolder.count--;

                viewHolder.tv6_counter.setText(String.valueOf(viewHolder.count));
            }


        }
    });
    return v;
}

在这里,您可以看到逻辑从购物车添加或删除计数器(添加或删除项目)。但在这里我遇到了一个问题,不知道如何将计数器值(单个行)发送到其他活动通过意图以及如何接收它们。我希望你理解我的问题!!如果不在下面添加你的评论,我们深表感激。

3 个答案:

答案 0 :(得分:1)

将值从intent传递到另一个活动....

这里我编辑你的代码看看.......................

viewHolder.imv2.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        Toast.makeText(v.getContext(), "Wait.......Checking Out", Toast.LENGTH_SHORT).show();

        context.startActivity(new Intent(context,ShoppingCart.class).setFlags(Intent.FLAG_ACTIVITY_NEW_TASK).putExtra("counter",counter)) ;
    }
});

并在其他活动中获得价值..........

int counter=getIntent.getIntExtra(counter,0);//if counter have no value than it assign 0

享受编码..............................

答案 1 :(得分:1)

您可以按照以下答案解决:

您的代码:

context.startActivity(new Intent(context,ShoppingCart.class).setFlags(Intent.FLAG_ACTIVITY_NEW_TASK)) ;

替换MyCode:

context.startActivity(new Intent(context,ShoppingCart.class).putExtra("counter",viewHolder.count).setFlags(Intent.FLAG_ACTIVITY_NEW_TASK)) ;

答案 2 :(得分:1)

我建议以下步骤将计数器数据分享给您的下一个活动:

1 - 在MyCustom类中声明一个类变量:

int mCount=0;

2-修改如下代码以存储count的值:

 viewHolder.btn3Plus.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            viewHolder.count++;
            mCount=viewHolder.count;

viewHolder.tv6_counter.setText(将String.valueOf(viewHolder.count));

        }
    });

    viewHolder.btn2Minus.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            if(viewHolder.count>0) {
                viewHolder.count--;
            mCount=viewHolder.count;

                viewHolder.tv6_counter.setText(String.valueOf(viewHolder.count));
            }


        }
    });

3-将mCount的值发送为IntentExtra,如:

viewHolder.imv2.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Toast.makeText(v.getContext(), "Wait.......Checking Out", Toast.LENGTH_SHORT).show();
Intent intent=new Intent(context, ShoppingCart.class);
                        intent.putExtra("CounterValue", mCount);
                        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                        startActivity(intent) ;
        }
    });

4-然后在ShoppingCart Activity的OnCreate上获取mCount的值,如:

 int CountExtra = getIntent().getIntExtra("CounterValue, 0);