关于Android studio中的传值问题,代码是点餐app中的购物车模块,出现了不可解决的问题

package com.example.UI;

import android.annotation.SuppressLint;
import android.app.Activity;
import android.os.Bundle;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.TextView;

import com.example.Dao.JSharedPreferences;
import com.example.mobleorderfood.R;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class CartActivity extends Activity {

SimpleAdapter listadapter;
List<Map<String,Object>>    mOrderinfo;
static  int total = 0;
TextView sumprice;
@Override
protected  void onCreate(Bundle saveInstanceState) {
    super.onCreate(saveInstanceState);
    setContentView(R.layout.activity_cart);
    mOrderinfo = getOrderData();
    ListView mlistview = (ListView)findViewById(R.id.OrderListView);
    sumprice = (TextView)findViewById(R.id.ordertotalprice);//总价格



    listadapter = new SimpleAdapter(CartActivity.this,mOrderinfo,R.layout.cartlistitem,
            new String[]{"dishName","num","price","sumprice"},
            new int[]{R.id.dishname,R.id.num,R.id.price,R.id.Sumprice});
    listadapter.notifyDataSetChanged();
    mlistview.setAdapter(listadapter);

}

private List<Map<String, Object>> getOrderData() {
    ArrayList<Map<String,Object>> Orderinfo = new ArrayList<Map<String, Object>>();
    Map<String,Object> map = new HashMap<String, Object>();

   map.put("dishName", JSharedPreferences.getConfigStrValue(this,"dish1_name"));
   int num =  JSharedPreferences.getConfigIntValue(this,"dish1_num",0);
   int price =  JSharedPreferences.getConfigIntValue(this,"dish1_price",0);
    map.put("num",num);
    map.put("price",price);
    map.put("sumprice",num*price);
    total+=num*price;
    Orderinfo.add(map);

    map = new HashMap<String, Object>();
    map.put("dishName", JSharedPreferences.getConfigStrValue(this,"dish2_name"));
    num =  JSharedPreferences.getConfigIntValue(this,"dish2_num",0);
    price =  JSharedPreferences.getConfigIntValue(this,"dish2_price",0);
    map.put("num",num);
    map.put("price",price);
    map.put("sumprice",num*price);
    total+=num*price;
    Orderinfo.add(map);

/*
map.put("dishName","宮保鷄丁");
map.put("num",2);
map.put("price",28);
map.put("sumprice",56);
Orderinfo.add(map);
*/
sumprice.setText(total);
}
}
图片说明
图片说明
图片说明
图片说明
以上就是问题所在,实训的练习,目前这个加入购物车无法完成,总是出现最后的那个情况,发现说是不能检测到值,但是换了好几种方法直接给最后写上值都没法检测到,想知道怎么改。

5个回答

把sumprice.setText(total);改成

sumprice.setText(total+“”);

total+=num*price; --------------->total+=(num*price);把total Log出来看有没有值

qq_42302655
Wong先森 直接写的值都没能检测到,目前这个问题我先暂放了,最后再搞,因为还有个外卖界面没有完成,下午回来再看看
4 个月之前 回复

写法很奇特。 看一下你的sumprice有没有问题, 再断点看一下你的total值。 这种错误仔细一点很容易找到。

qq_42302655
Wong先森 回复Jimmy_buer: 我把这一页删掉了 换了别的内容 谢谢
4 个月之前 回复
qq_32508519
Jimmy_buer 回复Wong先森: 源码分享到csdn上,给个链接。 帮你调试。
4 个月之前 回复
qq_42302655
Wong先森 我都看过了,id等东西都是正确的,并且老师直接赋值调试好像最后也是没能解决
4 个月之前 回复

原因就是你调用sumprice在前,sumprice的赋值在后呀
把这一句
sumprice= (TextView)findViewById(R.id.ordertotalprice);//总价格
放在
mOrderinfo = getOrderData();
之前
话说你们老师这么写的代码吗,有点不敢恭维啊

qq_42302655
Wong先森 我调了一下,最后还是报这两个地方的错误,没有变化
4 个月之前 回复

同楼上所说,你的代码顺序错了
如果改后还报错,请检查你的activity_cart布局里面有没有ordertotalprice这个id

qq_42302655
Wong先森 回复王能: 我把这页删掉了,换了个别的内容,没有问题了
4 个月之前 回复
weimingjue
王能 回复Wong先森: 修正后的代码贴上去,xml也贴出来看看
4 个月之前 回复
qq_42302655
Wong先森 都有的 而且顺序都改过一遍了 还是图上两个位置的错误
4 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!