如何从适配器值传递给活动 [英] How to Pass Values from Adapter to Activity

查看:103
本文介绍了如何从适配器值传递给活动的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图表现出的产品清单连同GrandTotal金额,但每当我用这个code在我的code得到的 NullPointerException异常,见下面的code:

 如果(Constants.sItem_Detail.size()0){
                双mGTotal = Double.parseDouble(Constants.sItem_Detail.get(0)获得(com.example.sample.CartAdapter.KEY_TOTAL));
                的for(int i = 1; I< Constants.sItem_Detail.size();我++)
                {
                mGTotal = mGTotal + Double.parseDouble(Constants.sItem_Detail.get(I)获得(com.example.sample.CartAdapter.KEY_TOTAL));
                }

                mGrandTotal =将String.valueOf(###。新的DecimalFormat()格式(mGTotal));
                mTxtViewGrandTotal.setText(mGrandTotal);
                myTextVeiwGrandTotal.setText(mGrandTotal);
 

特别是,当我使用这些线路越来越错误:

 双mGTotal = Double.parseDouble(Constants.sItem_Detail.get(0)获得(com.example.sample.CartAdapter.KEY_TOTAL));

mGTotal = mGTotal + Double.parseDouble(Constants.sItem_Detail.get(I)获得(com.example.sample.CartAdapter.KEY_TOTAL));
 

我曾尝试与下面code:

 如果(Constants.sItem_Detail.size()0)
{
Toast.makeText(getApplicationContext(),常量大于0,Toast.LENGTH_LONG).show();
}
其他 {
Toast.makeText(getApplicationContext(),常数小于℃下,Toast.LENGTH_LONG).show();
}
 

和获得常量大于0,并在车表示数量的项目是1 但每当我用这条线在我的code得到的问题,这是正确的方式来获得价值从适配器活动?

<$p$p><$c$c>Double.parseDouble(Constants.sItem_Detail.get(0).get(com.example.sample.CartAdap‌​‌​ter.KEY_TOTAL));

其实我计算每一个总量和适配器类中的每个项目,现在要显示所有总金额为总计在活动的总和,但面临的问题,告诉我,我在做什么错误?

下面是完整的code:

CartActivity.java:

 保护无效的onCreate(包savedInstanceState){
        // TODO自动生成方法存根
        super.onCreate(savedInstanceState);
        的setContentView(R.layout.activity_cart);

            mLstView1 =(ListView控件)findViewById(R.id.listView1);
            mTxtViewGrandTotal =(TextView中)findViewById(R.id.bill_amount);
            myTextVeiwGrandTotal =(TextView中)findViewById(R.id.mTxtViewGrandTotalValue);
            mItems =(TextView中)findViewById(R.id.total_items);

            mTax =(TextView中)findViewById(R.id.taxes);
            mDeliveryCharges =(TextView中)findViewById(R.id.delivery_charges);
            mDiscount =(TextView中)findViewById(R.id.discount);
            mPackaging =(TextView中)findViewById(R.id.packaging);

            如果(Constants.sItem_Detail.size()大于0){
                双mGTotal = Double.parseDouble(Constants.sItem_Detail.get(0)获得(com.example.sample.CartAdapter.KEY_TOTAL));
                的for(int i = 1; I&LT; Constants.sItem_Detail.size();我++)
                {
                mGTotal = mGTotal + Double.parseDouble(Constants.sItem_Detail.get(I)获得(com.example.sample.CartAdapter.KEY_TOTAL));
                }

                mGrandTotal =将String.valueOf(###。新的DecimalFormat()格式(mGTotal));
                mTxtViewGrandTotal.setText(mGrandTotal);
                myTextVeiwGrandTotal.setText(mGrandTotal);


                mTaxes =将String.valueOf(mTax);
                mTax.setText(0);
                mDelivery =将String.valueOf(mDeliveryCharges);
                mDeliveryCharges.setText(0);

                mTotal =将String.valueOf(Constants.sItem_Detail.size());
                mItems.setText(mTotal);

            }

            mViewCartAdpt =新CartAdapter(CartActivity.this);
            mLstView1.setAdapter(mViewCartAdpt);
            mLstView1.setOnItemClickListener(新OnItemClickListener(){

            公共无效onItemClick(适配器视图&LT;&GT;母公司,视图V,
                     最终诠释的位置,长ID)
             {

            }
        });
    }

    //当活动开始与用户交互被叫
    @覆盖
    保护无效onResume(){
        super.onResume();
        mViewCartAdpt.notifyDataSetChanged();
    }
}
 

CartAdapter.java:

 公共类CartAdapter扩展了BaseAdapter {



  公共静态最后弦乐LOG_TAG =CartAdapter;

    公共静态最后弦乐KEY_TITLE =称号;
    公共静态最后弦乐KEY_COST =成本;
    公共静态最后弦乐KEY_QTY =数量;
    公共静态最后弦乐KEY_TOTAL =总;

    活动活性;
    LayoutInflater充气;
    的ImageButton mImgBtnDelete;
    ListView控件的ListView;

    私人双人itemamount = 0;
    私人诠释itemquantity = 0;



    公共CartAdapter(活性){
        // TODO自动生成构造函数存根
        活性= A;
        充气=(LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    }

    公众诠释getCount将(){
        // TODO自动生成方法存根
        返回Constants.sItem_Detail.size();
    }

    公共对象的getItem(INT位置){
        // TODO自动生成方法存根
        返回的位置;
    }

    众长getItemId(INT位置){
        // TODO自动生成方法存根
        返回的位置;
    }

    公共查看getView(最终诠释的立场,观点convertView,ViewGroup中父){
        // TODO自动生成方法存根
        查看VI = convertView;
        如果(convertView == NULL)
            VI = inflater.inflate(R.layout.listrow_cart,NULL); // listrow_cart

            vi.setClickable(真正的);
            vi.setFocusable(真正的);

            vi.setOnClickListener(新OnClickListener(){

                @覆盖
                公共无效的onClick(视图v)
                {

                }
            });

            mImgBtnDelete =(的ImageButton)六
                    .findViewById(R.id.mImgBtnDelete);
                mImgBtnDelete.setOnClickListener(新OnClickListener(){

                公共无效的onClick(视图v){
                    // TODO自动生成方法存根
                    Constants.sItem_Detail.remove(位置);
                    notifyDataSetChanged();
                    意图mInViewCartRefresh =新的意图(活动,
                            CartActivity.class);
                    activity.startActivity(mInViewCartRefresh);
                    activity.finish();
                }
            });

            最后的TextView标题=(TextView中)vi.findViewById(R.id.title);
            最后的EditText数量=(EditText上)vi.findViewById(R.id.qty);
            最后的TextView成本=(TextView中)vi.findViewById(R.id.cost);
            最后的TextView总=(TextView中)vi.findViewById(R.id.total);


            HashMap的&LT;字符串,字符串&GT;项目=新的HashMap&LT;字符串,字符串&GT;();
            项目= Constants.sItem_Detail.get(位置);

            //设置列表视图中的所有值

            title.setText(item.get(com.example.sample.ItemsActivity.KEY_TITLE));
            cost.setText(item.get(com.example.sample.ItemsActivity.KEY_COST));
            qty.setText(1);

            itemquantity =的Integer.parseInt(qty.getText()的toString());
            itemamount = Double.parseDouble(cost.getText()的toString());
            total.setText(###。新的DecimalFormat()格式(itemamount * itemquantity));

            qty.addTextChangedListener(新TextWatcher(){
                公共无效onTextChanged(CharSequence中,诠释开始,诠释之前,
                        诠释计数){
                    // TODO自动生成方法存根
                    如果(!qty.getText()。的toString()。等于()
                            || !qty.getText()的toString()。等于()){

                        //接受用户量
                        itemquantity =的Integer.parseInt(qty.getText()
                                的ToString());

                        //改变总额按变化数量(由用户输入)
                        total.setText(###。新的DecimalFormat()格式(itemamount * itemquantity));
                    } 其他 {
                        total.setText(0.00);
                    }
                }

                公共无效beforeTextChanged(CharSequence中,诠释开始,诠释计数,
                        之后INT){
                    // TODO自动生成方法存根
                }

                公共无效afterTextChanged(编辑S){
                }
            });

        返回六;

    }
}
 

logcat的:

 五月7日至2日:05:29.411:D / AndroidRuntime(802):关闭虚拟机
5月7日至2日:05:29.420:W / dalvikvm(802):主题ID = 1:螺纹退出与未捕获的异常(组= 0x40a71930)
5月7日至2日:05:29.501:E / AndroidRuntime(802):致命异常:主要
5月7日至2日:05:29.501:E / AndroidRuntime(802):java.lang.RuntimeException的:无法启动的活动ComponentInfo {com.example.sample / com.example.sample.CartActivity}:显示java.lang.NullPointerException
5月7日至2日:05:29.501:E / AndroidRuntime(802):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2180)
5月7日至2日:05:29.501:E / AndroidRuntime(802):在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)
5月7日至2日:05:29.501:E / AndroidRuntime(802):在android.app.ActivityThread.access $ 600(ActivityThread.java:141)
5月7日至2日:05:29.501:E / AndroidRuntime(802):在android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1234)
5月7日至2日:05:29.501:E / AndroidRuntime(802):在android.os.Handler.dispatchMessage(Handler.java:99)
5月7日至2日:05:29.501:E / AndroidRuntime(802):在android.os.Looper.loop(Looper.java:137)
5月7日至2日:05:29.501:E / AndroidRuntime(802):在android.app.ActivityThread.main(ActivityThread.java:5041)
5月7日至2日:05:29.501:E / AndroidRuntime(802):在java.lang.reflect.Method.invokeNative(本机方法)
5月7日至2日:05:29.501:E / AndroidRuntime(802):在java.lang.reflect.Method.invoke(Method.java:511)
5月7日至2日:05:29.501:E / AndroidRuntime(802):在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:793)
5月7日至2日:05:29.501:E / AndroidRuntime(802):在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
5月7日至2日:05:29.501:E / AndroidRuntime(802):在dalvik.system.NativeStart.main(本机方法)
5月7日至2日:05:29.501:E / AndroidRuntime(802):由:显示java.lang.NullPointerException
5月7日至2日:05:29.501:E / AndroidRuntime(802):在java.lang.StringToReal.parseDouble(StringToReal.java:244)
5月7日至2日:05:29.501:E / AndroidRuntime(802):在java.lang.Double.parseDouble(Double.java:295)
5月7日至2日:05:29.501:E / AndroidRuntime(802):在com.example.sample.CartActivity.onCreate(CartActivity.java:54)
5月7日至2日:05:29.501:E / AndroidRuntime(802):在android.app.Activity.performCreate(Activity.java:5104)
5月7日至2日:05:29.501:E / AndroidRuntime(802):在android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080)
5月7日至2日:05:29.501:E / AndroidRuntime(802):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144)
5月7日至2日:05:29.501:E / AndroidRuntime(802):11 ...更多
5月7日至2日:05:33.180:I /处理(802):发送信号。 PID:802 SIG:9
 

解决方案

(1)是从适配器传递价值上适配器设置活动的一种方式,

即我们写listview.setadapter(xyzadapter);在MainActivity,我们想从xyzadapter到MainActivity传递价值,那么只有一个办法,我知道,做一个接口,在定义一个方法的参数传递的价值,然后实现它的适配器类,

(2)如果我们想通过从适配器值到另一个活动中,没有设置,那么我们可以用putExtra方法传递值,

让我知道,如果你有任何问题...

编辑:作为(1)答案

让一个接口在主包:

 公共接口DataTransferInterface {
    公共无效setValues​​方法(ArrayList中&LT;&GT;人);
}
 

在接口的​​适配器类化妆对象:

这条线之下公共类CartAdapter扩展了BaseAdapter { 和构造函数之前:

  DataTransferInterface dtInterface;
 

在你的建筑通过这个接口

在CartAdapter使用此构造:

 公共CartAdapter(活动一,DataTransferInterface dtInterface){
    // TODO自动生成构造函数存根
    活性= A;
    this.dtInterface = dtInterface;
    充气=(LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
 

和使用dtInterface.setValues​​(你的价值观传递到活动)

现在你CartActivity.java

实现这样的接口:

 公共类CartActivity扩展活动实现DataTransferInterface {
 

和变化

  mViewCartAdpt =新CartAdapter(CartActivity.this);
 

  mViewCartAdpt =新CartAdapter(CartActivity.this,这一点);
 

现在你会看到红线以下CartActivity(正义之举CartActivity鼠标光标),显示添加未实现的方法,按一下,将覆盖setValues​​方法将

  @覆盖
公共无效setValues​​方法(ArrayList中&LT;&GT;人){
    // TODO自动生成方法存根

}
 

您可以使用任何类型的数据传递的ArrayList,而不是

让我知道,如果您有任何ussue:

I am trying to show list of Items along with GrandTotal Amount, but whenever i use this code in my code getting NullPointerException, see below that code:

if (Constants.sItem_Detail.size() > 0) {
                Double mGTotal = Double.parseDouble(Constants.sItem_Detail.get(0).get(com.example.sample.CartAdapter.KEY_TOTAL));
                for (int i = 1; i < Constants.sItem_Detail.size(); i++) 
                {   
                mGTotal = mGTotal + Double.parseDouble(Constants.sItem_Detail.get(i).get(com.example.sample.CartAdapter.KEY_TOTAL));
                }

                mGrandTotal = String.valueOf(new DecimalFormat("##.#").format(mGTotal));
                mTxtViewGrandTotal.setText(mGrandTotal);
                myTextVeiwGrandTotal.setText(mGrandTotal);  

Particularly, while i use these lines getting Error:

Double mGTotal = Double.parseDouble(Constants.sItem_Detail.get(0).get(com.example.sample.CartAdapter.KEY_TOTAL));

mGTotal = mGTotal + Double.parseDouble(Constants.sItem_Detail.get(i).get(com.example.sample.CartAdapter.KEY_TOTAL));

i have tried with below code:

if (Constants.sItem_Detail.size() > 0) 
{ 
Toast.makeText(getApplicationContext(), "Constants is Greater Than 0", Toast.LENGTH_LONG).show(); 
} 
else { 
Toast.makeText(getApplicationContext(), "Constants is Less Than < 0", Toast.LENGTH_LONG).show(); 
} 

and getting Constants is Greater Than 0, and showing number of items in Cart is 1 but whenever i use this line in my code getting problem, is it the right way to get value from adapter to activity ?

Double.parseDouble(Constants.sItem_Detail.get(0).get(com.example.sample.CartAdap‌​‌​ter.KEY_TOTAL));

Actually i am calculating total amount of each and every item in Adapter class and now trying to show sum of all total amount as grand total in Activity, but facing problem, tell me where i am doing mistake?

Here is complete code:

CartActivity.java:

protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_cart);

            mLstView1 = (ListView) findViewById(R.id.listView1);
            mTxtViewGrandTotal = (TextView) findViewById(R.id.bill_amount);
            myTextVeiwGrandTotal =(TextView) findViewById(R.id.mTxtViewGrandTotalValue);
            mItems = (TextView) findViewById(R.id.total_items);

            mTax =(TextView) findViewById(R.id.taxes);
            mDeliveryCharges =(TextView) findViewById(R.id.delivery_charges);
            mDiscount =(TextView) findViewById(R.id.discount);
            mPackaging =(TextView) findViewById(R.id.packaging);

            if (Constants.sItem_Detail.size() > 0) {
                Double mGTotal = Double.parseDouble(Constants.sItem_Detail.get(0).get(com.example.sample.CartAdapter.KEY_TOTAL));
                for (int i = 1; i < Constants.sItem_Detail.size(); i++) 
                {   
                mGTotal = mGTotal + Double.parseDouble(Constants.sItem_Detail.get(i).get(com.example.sample.CartAdapter.KEY_TOTAL));
                }

                mGrandTotal = String.valueOf(new DecimalFormat("##.#").format(mGTotal));
                mTxtViewGrandTotal.setText(mGrandTotal);
                myTextVeiwGrandTotal.setText(mGrandTotal);  


                mTaxes = String.valueOf(mTax);
                mTax.setText("0");
                mDelivery = String.valueOf(mDeliveryCharges);
                mDeliveryCharges.setText("0");

                mTotal = String.valueOf(Constants.sItem_Detail.size());
                mItems.setText(mTotal);     

            }

            mViewCartAdpt = new CartAdapter(CartActivity.this);
            mLstView1.setAdapter(mViewCartAdpt);
            mLstView1.setOnItemClickListener(new OnItemClickListener() {

            public void onItemClick(AdapterView<?> parent, View v,
                     final int position, long id) 
             {       

            }
        }); 
    } 

    // Called when the activity begins interacting with the user
    @Override
    protected void onResume(){
        super.onResume();
        mViewCartAdpt.notifyDataSetChanged();
    }   
}

CartAdapter.java:

 public class CartAdapter extends BaseAdapter {



  public static final String LOG_TAG = "CartAdapter";

    public static final String KEY_TITLE = "title";
    public static final String KEY_COST = "cost";
    public static final String KEY_QTY = "qty";
    public static final String KEY_TOTAL = "total";

    Activity activity;
    LayoutInflater inflater;
    ImageButton mImgBtnDelete;  
    ListView listView;

    private double itemamount = 0;
    private int itemquantity = 0;



    public CartAdapter(Activity a) {
        // TODO Auto-generated constructor stub
        activity = a;
        inflater = (LayoutInflater) activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    }

    public int getCount() {
        // TODO Auto-generated method stub
        return Constants.sItem_Detail.size();
    }

    public Object getItem(int position) {
        // TODO Auto-generated method stub
        return position;
    }

    public long getItemId(int position) {
        // TODO Auto-generated method stub
        return position;
    }

    public View getView(final int position, View convertView, ViewGroup parent) {
        // TODO Auto-generated method stub
        View vi = convertView;
        if (convertView == null)
            vi = inflater.inflate(R.layout.listrow_cart, null);  // listrow_cart

            vi.setClickable(true);
            vi.setFocusable(true);          

            vi.setOnClickListener(new OnClickListener() {

                @Override
                public void onClick(View v) 
                {                       

                }       
            }); 

            mImgBtnDelete = (ImageButton) vi
                    .findViewById(R.id.mImgBtnDelete);
                mImgBtnDelete.setOnClickListener(new OnClickListener() {

                public void onClick(View v) {
                    // TODO Auto-generated method stub              
                    Constants.sItem_Detail.remove(position);
                    notifyDataSetChanged();
                    Intent mInViewCartRefresh = new Intent(activity,
                            CartActivity.class);
                    activity.startActivity(mInViewCartRefresh);
                    activity.finish();          
                }
            });

            final TextView title = (TextView) vi.findViewById(R.id.title);
            final EditText qty = (EditText) vi.findViewById(R.id.qty);
            final TextView cost = (TextView) vi.findViewById(R.id.cost);
            final TextView total = (TextView) vi.findViewById(R.id.total);


            HashMap<String, String> item = new HashMap<String, String>();
            item = Constants.sItem_Detail.get(position);

            // Setting all values in listview

            title.setText(item.get(com.example.sample.ItemsActivity.KEY_TITLE));
            cost.setText(item.get(com.example.sample.ItemsActivity.KEY_COST));
            qty.setText("1");

            itemquantity = Integer.parseInt(qty.getText().toString());
            itemamount = Double.parseDouble(cost.getText().toString());
            total.setText(new DecimalFormat("##.#").format(itemamount*itemquantity));

            qty.addTextChangedListener(new TextWatcher() {
                public void onTextChanged(CharSequence s, int start, int before,
                        int count) {
                    // TODO Auto-generated method stub
                    if (!qty.getText().toString().equals("")
                            || !qty.getText().toString().equals("")) {

                        // accept quantity by user
                        itemquantity = Integer.parseInt(qty.getText()
                                .toString());

                        // changes in total amount as per change in qty (entered by user)
                        total.setText(new DecimalFormat("##.#").format(itemamount*itemquantity));
                    } else {
                        total.setText("0.00");
                    }
                }

                public void beforeTextChanged(CharSequence s, int start, int count,
                        int after) {
                    // TODO Auto-generated method stub
                }

                public void afterTextChanged(Editable s) {
                }
            });

        return vi;

    }   
}

Logcat:

07-02 05:05:29.411: D/AndroidRuntime(802): Shutting down VM
07-02 05:05:29.420: W/dalvikvm(802): threadid=1: thread exiting with uncaught exception (group=0x40a71930)
07-02 05:05:29.501: E/AndroidRuntime(802): FATAL EXCEPTION: main
07-02 05:05:29.501: E/AndroidRuntime(802): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.sample/com.example.sample.CartActivity}: java.lang.NullPointerException
07-02 05:05:29.501: E/AndroidRuntime(802):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2180)
07-02 05:05:29.501: E/AndroidRuntime(802):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)
07-02 05:05:29.501: E/AndroidRuntime(802):  at android.app.ActivityThread.access$600(ActivityThread.java:141)
07-02 05:05:29.501: E/AndroidRuntime(802):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234)
07-02 05:05:29.501: E/AndroidRuntime(802):  at android.os.Handler.dispatchMessage(Handler.java:99)
07-02 05:05:29.501: E/AndroidRuntime(802):  at android.os.Looper.loop(Looper.java:137)
07-02 05:05:29.501: E/AndroidRuntime(802):  at android.app.ActivityThread.main(ActivityThread.java:5041)
07-02 05:05:29.501: E/AndroidRuntime(802):  at java.lang.reflect.Method.invokeNative(Native Method)
07-02 05:05:29.501: E/AndroidRuntime(802):  at java.lang.reflect.Method.invoke(Method.java:511)
07-02 05:05:29.501: E/AndroidRuntime(802):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
07-02 05:05:29.501: E/AndroidRuntime(802):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
07-02 05:05:29.501: E/AndroidRuntime(802):  at dalvik.system.NativeStart.main(Native Method)
07-02 05:05:29.501: E/AndroidRuntime(802): Caused by: java.lang.NullPointerException
07-02 05:05:29.501: E/AndroidRuntime(802):  at java.lang.StringToReal.parseDouble(StringToReal.java:244)
07-02 05:05:29.501: E/AndroidRuntime(802):  at java.lang.Double.parseDouble(Double.java:295)
07-02 05:05:29.501: E/AndroidRuntime(802):  at com.example.sample.CartActivity.onCreate(CartActivity.java:54)
07-02 05:05:29.501: E/AndroidRuntime(802):  at android.app.Activity.performCreate(Activity.java:5104)
07-02 05:05:29.501: E/AndroidRuntime(802):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080)
07-02 05:05:29.501: E/AndroidRuntime(802):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144)
07-02 05:05:29.501: E/AndroidRuntime(802):  ... 11 more
07-02 05:05:33.180: I/Process(802): Sending signal. PID: 802 SIG: 9

解决方案

(1) There is one way to pass value from Adapter to Activity on which adapter is set,

i.e we write listview.setadapter(xyzadapter); in MainActivity, and we want to pass value from xyzadapter to MainActivity, then only one way I know, make one interface, define one method in that with parameters for passing value, and then implement it on adapter class,

(2) If we want to pass values from adapter to another activity in which it is not set, then we can use putExtra method to pass value,

Let me know if you have any issue...

Edited: for (1) answer

make one interface in your main package:

public interface DataTransferInterface {
    public void setValues(ArrayList<?> al);
}

in your adapter class make object of Interface:

below this line public class CartAdapter extends BaseAdapter { and before constructor:

DataTransferInterface dtInterface;

in your construction pass this interface

in CartAdapter use this constructor:

public CartAdapter(Activity a, DataTransferInterface dtInterface) {
    // TODO Auto-generated constructor stub
    activity = a;
    this.dtInterface = dtInterface;
    inflater = (LayoutInflater) activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}

and use dtInterface.setValues(your Values to pass to Activity)

Now in your CartActivity.java

implement that interface like:

public class CartActivity extends Activity implements DataTransferInterface {

and change

mViewCartAdpt = new CartAdapter(CartActivity.this); 

to

mViewCartAdpt = new CartAdapter(CartActivity.this, this);

now you will see red line below CartActivity (just move your mouse cursor on CartActivity) that shows add unimplemented methods, click on that will override setValues method

@Override
public void setValues(ArrayList<?> al) {
    // TODO Auto-generated method stub

} 

you can use Any type of data to pass instead of ArrayList

Let me know if you have any ussue:

这篇关于如何从适配器值传递给活动的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆