1

我正在其中我使用JSON到ListView中獲取數據的應用程序,並允許用戶在另一種形式中查看所選的項目,在singleMenuItem形式我已經放置的按鈕即 - 添加到購物車,這裏我希望每當用戶點擊那個按鈕,然後選擇的項目需要在查看購物車表單中顯示,然後返回到列表視圖選擇一個項目>在另一個活動中顯示>再次點擊添加到購物車按鈕並顯示由用戶選擇進入查看購物車表單中的所有項目,我只是想表明項目的標題和成本,這些我使用意圖從ListView的形式和獲取到SingleMenuItem形式現在我想在像查看購物車形式展現: - 通過添加多個項目動作序列,問題是我不知道如何每次用戶點擊添加到購物車按鈕時更新查看購物車表單。欲讓用戶通過動作序列添加多個項目

目錄(列表查看活動)代碼: -

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

        } 
       }); 



      } }} 

SingleMenuItem活動代碼

public class SingleMenuItem extends Activity{ 
static final String KEY_TITLE = "title"; 
static final String KEY_COST = "cost"; 
static final String KEY_THUMB_URL = "imageUri"; 
private EditText edit_qty_code; 
private TextView txt_total; 
private TextView text_cost_code; 
private double itemamount = 0; 
private double itemquantity = 0; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.single); 

    Intent in = getIntent(); 
    String title = in.getStringExtra(KEY_TITLE); 
    String thumb_url = in.getStringExtra(KEY_THUMB_URL); 
    final String cost = in.getStringExtra(KEY_COST); 

    ImageLoader imageLoader = new ImageLoader(getApplicationContext()); 

    ImageView imgv = (ImageView) findViewById(R.id.single_thumb); 
    TextView txttitle = (TextView) findViewById(R.id.single_title); 
    TextView txtcost = (TextView) findViewById(R.id.single_cost); 
    TextView txtheader = (TextView) findViewById(R.id.actionbar); 

    txttitle.setText(title); 
    txtheader.setText(title); 
    txtcost.setText(cost); 
    imageLoader.DisplayImage(thumb_url, imgv); 



    ImageButton addToCartButton = (ImageButton) findViewById(R.id.img_add); 
    addToCartButton.setOnClickListener(new OnClickListener() { 

    public void onClick(View v) {        
     Intent in = new Intent 
       (SingleMenuItem.this, FinalOrder.class); 
      in.putExtra(KEY_TITLE, getIntent().getStringExtra(KEY_TITLE)); 
      in.putExtra(KEY_COST, getIntent().getStringExtra(KEY_COST)); 
      startActivity(in); 


      // Close the activity 
       finish(); 
      } 
     });  
}} 

ViewCart活動代碼: -

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

} 
} 

回答

0

要使查看購物車更新,您需要集中存儲數據。最好使用SQLite數據庫。然後,您可以在用戶添加到購物車時更新此數據庫,然後在查看購物車時,可以從數據庫中讀取數據。

+0

這裏我使用JSON數據,任何其他方式 –

+0

也許不是SQLite的,但你需要在一些地方保存數據。當您在列表活動中時,FinalOrder活動無法保證存在,因此您不能只更新它上面的值。 – cjk

+0

我要刪除我的答案,即使你還沒有說爲什麼我的想法是「錯誤的」(這是一個購物車如何正常工作),但我會離開這裏,看看你怎麼樣的評論是有幫助的任何人其他人想回答。 – cjk

相關問題