android – 如何将值从适配器传递给活动

android – 如何将值从适配器传递给活动,第1张

概述我试图显示项目列表以及GrandTotal Amount,但每当我在我的代码中使用此代码获取NullPointerException时,请参阅下面的代码: if (Constants.sItem_Detail.size() > 0) { Double mGTotal = Double.parseDouble(Constants.sItem_Detail.get(0).get(com.exa 我试图显示项目列表以及GrandTotal Amount,但每当我在我的代码中使用此代码获取NullPointerException时,请参阅下面的代码:
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);

特别是,虽然我使用这些行得到错误:

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));

我试过以下代码:

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(); }

并且获取常量大于0,并且显示购物车中的商品数量为1
但每当我在我的代码中使用这一行获得问题时,它是从适配器活动获取价值的正确方法吗?

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

实际上我正在计算Adapter类中每个项目的总金额,现在试图在Activity中显示所有总金额的总和为总计,但面对问题,告诉我我在哪里做错了?

这是完整的代码:

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 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 VM07-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: main07-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.NullPointerException07-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.access0(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.NullPointerException07-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 more07-02 05:05:33.180: I/Process(802): Sending signal. PID: 802 SIG: 9
解决方法 (1)有一种方法可以将值从Adapter传递给Activity,其中设置了适配器,

即我们写ListvIEw.setadapter(xyzadapter);在MainActivity中,我们希望将值从xyzadapter传递给MainActivity,然后只有我知道的一种方法,创建一个接口,用参数传递值定义一个方法,然后在适配器类上实现它,

(2)如果我们想将值从适配器传递给另一个未设置它的活动,那么我们可以使用putExtra方法传递值,

如果您有任何问题,请告诉我……

编辑:for(1)回答

在主包中创建一个界面:

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

在您的适配器类中创建接口的对象:

公共类CartAdapter扩展BaseAdapter {
在构造函数之前:

DataTransferInterface dtInterface;

在您的构造中传递此接口

在CartAdapter中使用此构造函数:

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

并使用dtInterface.setValues(您的值传递给Activity)

现在在你的CartActivity.java中

实现该接口,如:

public class CartActivity extends Activity implements DataTransferInterface {

并改变

mVIEwCartAdpt = new CartAdapter(CartActivity.this);

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

现在你会看到CartActivity下方的红线(只是将鼠标光标移到CartActivity上),显示添加未实现的方法,点击它会覆盖setValues方法

@OverrIDepublic voID setValues(ArrayList<?> al) {    // Todo auto-generated method stub}

您可以使用任何类型的数据来代替ArrayList

如果您有任何问题,请告诉我:

总结

以上是内存溢出为你收集整理的android – 如何将值从适配器传递给活动全部内容,希望文章能够帮你解决android – 如何将值从适配器传递给活动所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1134386.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-30
下一篇 2022-05-30

发表评论

登录后才能评论

评论列表(0条)

保存