Android 我想让用户按操作顺序添加多个项目
我正在制作一个应用程序,其中我使用JSON将数据提取到ListView中,并允许用户以另一种形式(singleMenuItem形式)查看所选项目 我已经放置了一个按钮,即-添加到购物车。每当用户单击“添加到购物车”按钮时,所选项目都需要显示在“查看购物车”表单中。对于添加到购物车的每个项目,将重复相同的过程 我只想显示每个项目的标题和成本,对于那些我正在从Android 我想让用户按操作顺序添加多个项目,android,android-intent,android-emulator,android-listview,Android,Android Intent,Android Emulator,Android Listview,我正在制作一个应用程序,其中我使用JSON将数据提取到ListView中,并允许用户以另一种形式(singleMenuItem形式)查看所选项目 我已经放置了一个按钮,即-添加到购物车。每当用户单击“添加到购物车”按钮时,所选项目都需要显示在“查看购物车”表单中。对于添加到购物车的每个项目,将重复相同的过程 我只想显示每个项目的标题和成本,对于那些我正在从ListView表单使用Intent获取到SingleMenuItem表单的项目,现在我想在视图中显示购物车表单,如:-按操作顺序添加多个项目
ListView
表单使用Intent获取到SingleMenuItem
表单的项目,现在我想在视图中显示购物车表单,如:-按操作顺序添加多个项目,问题是我不知道每次用户单击“添加到购物车”按钮时如何更新查看购物车表单
目录(列表视图活动)代码:-
ViewCart活动代码:-
public class Catalogue extends Activity{
static String URL = "http:/--------/and/menu.json";
static String KEY_CATEGORY = "item";
static final String KEY_TITLE = "title";
static final String KEY_DESCRIPTION = "description";
static final String KEY_COST = "cost";
static final String KEY_THUMB_URL = "imageUri";
ListView list;
LazyAdapter adapter;
/** Called when the activity is first created. */
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final ArrayList<HashMap<String, String>> itemsList = new ArrayList<HashMap<String, String>>();
list=(ListView)findViewById(R.id.listView1);
adapter=new LazyAdapter(this, itemsList);
list.setAdapter(adapter);
Intent in = getIntent();
KEY_CATEGORY = in.getStringExtra("category");
try{
JSONArray jsonArray = json.getJSONArray(KEY_CATEGORY);
for(int i=0;i < jsonArray.length();i++){
HashMap<String, String> map = new HashMap<String, String>();
JSONObject jsonObject = jsonArray.getJSONObject(i);
map.put("id", String.valueOf(i));
map.put(KEY_TITLE, jsonObject.getString(KEY_TITLE));
map.put(KEY_DESCRIPTION, jsonObject.getString(KEY_DESCRIPTION));
map.put(KEY_COST, jsonObject.getString(KEY_COST));
map.put(KEY_THUMB_URL, jsonObject.getString(KEY_THUMB_URL));
itemsList.add(map);
}
return itemsList;
}catch(JSONException e) {
Log.e("log_tag", "Error parsing data "+e.toString());
}
return null;
}
@Override
protected void onPostExecute(ArrayList<HashMap<String, String>> result) {
list=(ListView)findViewById(R.id.listView1);
adapter=new LazyAdapter(Catalogue.this, itemsList);
list.setAdapter(adapter);
this.progressDialog.dismiss();
list.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
HashMap<String, String> map = itemsList.get(position);
Intent in = new Intent(Catalogue.this, SingleMenuItem.class);
in.putExtra(KEY_TITLE, map.get(KEY_TITLE));
in.putExtra(KEY_DESCRIPTION, map.get(KEY_DESCRIPTION));
in.putExtra(KEY_THUMB_URL, map.get(KEY_THUMB_URL));
in.putExtra(KEY_COST, map.get(KEY_COST));
startActivity(in);
}
});
ImageButton viewShoppingCart = (ImageButton) findViewById(R.id.ButtonViewCart);
viewShoppingCart.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
Intent in = new Intent
(Catalogue.this, FinalOrder.class);
startActivity(in);
}
});
} }}
public class FinalOrder extends Activity
{
static final String KEY_TITLE = "title";
static final String KEY_COST = "cost";
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.view);
Intent in = getIntent();
String title1 = in.getStringExtra(KEY_TITLE);
String cost1 = in.getStringExtra(KEY_COST);
TextView txttitle1 = (TextView) findViewById(R.id.item_name);
TextView txtcost1 = (TextView) findViewById(R.id.item_cost);
txttitle1.setText(title1);
txtcost1.setText(cost1);
}
}
要更新视图购物车,需要集中存储数据。最好使用SQLite数据库。然后,当用户添加到购物车时,您可以更新此数据库,然后在查看购物车时,您可以从数据库中读取数据。这里我使用的是json数据,其他方式可能不是SQLite,但您需要将数据保存在某个位置。当您在列表活动中时,FinalOrder活动不能保证存在,因此您不能仅更新其上的值。我打算删除我的答案,尽管您没有说明我的想法“错误”的原因(购物车通常是这样工作的),但我会把它留在这里,看看你的评论对其他想回答的人有多大帮助。
public class FinalOrder extends Activity
{
static final String KEY_TITLE = "title";
static final String KEY_COST = "cost";
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.view);
Intent in = getIntent();
String title1 = in.getStringExtra(KEY_TITLE);
String cost1 = in.getStringExtra(KEY_COST);
TextView txttitle1 = (TextView) findViewById(R.id.item_name);
TextView txtcost1 = (TextView) findViewById(R.id.item_cost);
txttitle1.setText(title1);
txtcost1.setText(cost1);
}
}