我正在编写购物车应用,并允许用户将商品添加到购物车活动,在购物车商品列表中我使用 3 Textviews作为数值(即:项目成本,数量,总计)和这些值来自ProductInformationActivity.java ,现在我想要允许用户更新任何项目通过单击该特定项目仍然处于购物车活动中,我想在 ProductInformationActivity.java 中打开该项目,其中包含以下现有详细信息:Qty用户之前输入的内容(例如:我们在购物车应用中看到),要做到这一点,我在我的购物车适配器使用下面的代码....
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);
vi.setClickable(true);
vi.setFocusable(true);
vi.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v)
{
HashMap<String, String> item = Constant.wishProducts.get(position);
Log.d("CartAdapter", "onClick :: " + item);
Intent myIntent = new Intent
(activity, com.era.restaurant.versionoct.menu.ProductInformationActivity.class);
Log.d("CartAdapter", "Intent :: " + myIntent);
myIntent.putExtra("Item", item);
activity.startActivity(myIntent);
}
});
答案 0 :(得分:2)
你可以做两件事:
首先,只允许EditText字段中的数字数据。
其次,通过简单的检查确保EditText
中没有空值。
if(text_cost_code.getText().length() > 0) { try{ itemamount = Double.parseDouble(text_cost_code.getText().toString()); catch(NumberFormatException e) { } }
确保您已在number
中将inputType定义为numberSigned
或TextView
android:inputType="numberSigned"
<强>编辑:强>
尝试从Intent
ProductInformationActivity
获取字符串,如下所示:
String myItemValue = getIntent().getStringExtra("Item");
答案 1 :(得分:1)
修改强>
点击列表项时,您将发送HashMap<String,String>
作为额外内容。
您应该获取HashMap,然后从中获取产品信息。 像这样
HashMap<String,String> items=new HashMap<String,String>();
if (getIntent().getSerializableExtra("item") != null)
items = (HashMap<String, String>) getIntent().getSerializableExtra("item");
String title = items.get(KEY_TITLE);
String description = items.get(KEY_DESCRIPTION);
String thumb_url = items.get(KEY_THUMB_URL);
String cost = items.get(KEY_COST);
String total =items.get(KEY_TOTAL);
这个
itemamount = Double.parseDouble(text_cost_code.getText().toString());
导致Exception
,因为text_cost_code.getText().toString()
不是Number
或empty
您需要确保它包含Number
,并且不为空。
然后将此代码放在try catch
中,如果发生异常,则将值更改为0
try{
itemamount = Double.parseDouble(text_cost_code.getText().toString().trim());
}
catch(NumberFormatException e)
{
itemamount=0;
}