2012-02-03 47 views
0

我試圖把List mCartList的內容;進入下面的sms_body,例如:芝士漢堡,漢堡包,薯條(所以它可以通過短信發送)。我可以傳遞一個字符串,所以我知道它的作品。我根本不是程序員,這已經過了我一個月的試驗&錯誤。putExtra從List到SMS主體

活動下方將mCartList的內容調入列表中,以便它們可以被刪除。告訴我你需要什麼來幫助我解決這個問題。先謝謝你。

private ProductAdapter mProductAdapter; 
    // This List into the order button below 
    private List<Product> mCartList; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.shoppingcart);  
    mCartList = ShoppingCartHelper.getCart(); 
    // Make sure to clear the selections 
    for(int i=0; i<mCartList.size(); i++) { 
    mCartList.get(i).selected = false; 
    } 

        // Create the list 
    final ListView listViewCatalog = (ListView) findViewById(R.id.ListViewCatalog); 
    mProductAdapter = new ProductAdapter(mCartList, getLayoutInflater(), true); 
    listViewCatalog.setAdapter(mProductAdapter); 
    listViewCatalog.setOnItemClickListener(new OnItemClickListener() { 

    @Override 
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
    Product selectedProduct = mCartList.get(position); 
    if(selectedProduct.selected == true) 
    selectedProduct.selected = false; 
else 
    selectedProduct.selected = true; 
    mProductAdapter.notifyDataSetInvalidated(); 
    } 
}); 

     Button orderButton = (Button) findViewById(R.id.orderButton); 
     orderButton.setOnClickListener(new OnClickListener() { 

      public void onClick(View v) { 

     Uri uri = Uri.parse("smsto:1234567890"); 
     Intent intent = new Intent(Intent.ACTION_SENDTO, uri); 
     // The above List<Product> mCartList ia displayed in the window of the app 
     intent.putExtra("sms_body", "mCartList"); // I want the results of List<Product> mCartList to go here - I can not just insert the variable I just get errors and can't compile 
      startActivity(intent); 
    }  
});   

     Button removeButton = (Button) findViewById(R.id.ButtonRemoveFromCart); 
     removeButton.setOnClickListener(new OnClickListener() { 

     @Override 
      public void onClick(View v) { 
      // Loop through and remove all the products that are selected 
      // Loop backwards so that the remove works correctly 

      for(int i=mCartList.size()-1; i>=0; i--) { 
       if(mCartList.get(i).selected) { 
       mCartList.remove(i); 
      } 
     } 
      mProductAdapter.notifyDataSetChanged(); 
      } 
     });  
    } 

這是如何工作的。這是一個4選項卡列表,每個選項卡中包含不同的項目,其中3個或產品。客戶點擊該項目,他們看到一個說明,點擊添加到購物車,然後你的背部在菜單上。第4個選項卡是剛剛選擇的用於填充短信主體的順序。我已經能夠傳遞一個帶有「Hello World」文本的變量。我計算List的結果mCartList可以填充短信主體。我假設列表不能被轉換器插入到forn體中。讓我知道你是否需要更多信息。我不是一個程序員,我曾經見過類似的東西,但沒有寫出我從教程中獲得的其他文件是行不通的。先謝謝你。

回答

1

如果所有的產品都添加到您的mCartList,它只是一個串聯產品的字符串輸出在一起的事情如下:

orderButton.setOnClickListener(new OnClickListener() { 

     public void onClick(View v) { 

      Uri uri = Uri.parse("smsto:1234567890"); 
      Intent intent = new Intent(Intent.ACTION_SENDTO, uri); 

      StringBuilder builder = new StringBuilder(); 

      for(Product p : mCartList){ 
       builder.append(p.toString()); 
       builder.append('\n'); 
      } 

      intent.putExtra("sms_body", builder.toString()); 
      startActivity(intent); 
     } 
    }); 

確保您的產品具有如下定義一個toString()方法(例如產品猜測):

public class Product{ 
    String productName; 

    public String toString(){ 
     return productName; 
    } 
} 
+0

你做到了,謝謝。我沒有得到標題,我得到[email protected]這是它記得它的內存地址,我只需要玩。我很欣賞快速反應。你做了我所問的。我獲得了23小時的獎勵。 – 2012-02-05 23:41:36

+1

很高興我能幫到你。如果您正在獲取內存地址,請記住在產品上定義toString()方法。這應該重寫Object.toString(),它會輸出內存地址。 – 2012-02-05 23:43:27

+0

我想通了一切自己..只是在開玩笑。謝謝。我製作了一個應用程序,現在我可以重新成爲一名平面設計師。投票給johncarl 2032.一旦它讓我參加,我會給予獎勵。 – 2012-02-06 00:10:30