2011-12-03 26 views
-2

我有這個產品getters和setters我想要下面的布爾值(boolean = added)在點擊時更改爲true,當它再次點擊時返回false。下面的詳細信息:下面的代碼是在信息被存儲並且被轉移到一個列表視圖如何將值返回到getintent和puttynts之間的參數

package kfc.project; 

import java.util.ArrayList; 

public class ProductList { 
    ArrayList<Product> list; 


    public ProductList(){ 
     list = new ArrayList<Product>(); 

     //CREATE PRODUCT HERE 
     Product chicken; 
     list.add(new Product("Chicken", 10, 20, 30, 40, 50, 60, 70, 80, 90, 80,70,60,50,40,30));  

     Product rice; 
     list.add(new Product("Rice",11)); 
    } 

    public String[] getNames(){ 
     int c = 0; 
     int size = list.size() - 1; 
     String[] names = new String[size]; 

     while (size >= c) { 
      //names.add(list.get(c).getName()); 
      names[c] = list.get(c).getName(); 
      c++; 
     } 

     c = 0; 

     return names; 
    } 

    public ArrayList<Product> getList(){ 
     return list; 
    } 

} 

這裏getter和setter

package kfc.project; 

    public class Product { 


     String name; 
     int servingSize; 
     int calories; 
     int fat; 
     int saturatedFat; 
     int transFat; 
     int cholesterol; 
     int sodium; 
     int carbs; 
     int fiber; 
     int sugar; 
     int protein; 
     int vitamina; 
     int vitaminc; 
     int calcium; 
     int iron; 
     boolean added; 

     public Product (String name, int servingSize, int calories, int fat, int saturatedFat, int transFat, int cholesterol, int sodium, int carbs, int fiber, int sugar, int protein, int vitamina, int vitaminc, int calcium, int iron){ 
      this.name=name; 
      this.calories=calories; 
      this.servingSize=servingSize; 
      this.fat=fat; 
      this.saturatedFat=saturatedFat; 
      this.transFat=transFat; 
      this.cholesterol=cholesterol; 
      this.fiber=fiber; 
      this.sugar=sugar; 
      this.sodium=sodium; 
      this.carbs=carbs; 
      this.protein=protein; 
      this.vitamina=vitamina; 
      this.vitaminc=vitaminc; 
      this.calcium=calcium; 
      this.iron=iron; 
      added = false; 
     } 

     @Override 
     public String toString(){ 

       return name; 

     } 

     public Product (String name, int servingSize){ 
      this.name=name; 
      this.servingSize=servingSize; 
     } 

     public String getName() { 
      return name; 
     } 

     public int getServingSize() { 
      return servingSize; 
     } 

     public int getCalories() { 
      return calories; 
     } 

     public int getFat() { 
      return fat; 
     } 

     public int getSaturatedFat() { 
      return saturatedFat; 
     } 

     public int getTransFat() { 
      return transFat; 
     } 

     public int getCholesterol() { 
      return cholesterol; 
     } 

     public int getSodium() { 
      return sodium; 
     } 

     public int getCarbs() { 
      return carbs; 
     } 

     public int getProtein() { 
      return protein; 
     } 

     public int getFiber(){ 
      return fiber; 
     } 

     public int getSugar(){ 
      return sugar; 
     } 
     public int getVitaminA(){ 
      return vitamina; 
     } 
     public int getVitaminC(){ 
      return vitaminc; 
     } 
     public int getCalcium(){ 
      return calcium; 
     } 
     public int getIron(){ 
      return iron; 
     } 
     public void setAdded(boolean x){ 
      added = x; 
     } 
     public boolean getAdded(){ 
      return added; 
     } 

    } 

這是數組列表是針對列表視圖的代碼,其中有是它轉移到XML文件所在

package kfc.project; 

import java.util.ArrayList; 

import android.app.Activity; 
import android.app.ListActivity; 
import android.content.Context; 
import android.content.Intent; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.AdapterView; 
import android.widget.AdapterView.OnItemClickListener; 
import android.widget.ArrayAdapter; 
import android.widget.Button; 
import android.widget.ListView; 
import android.widget.Toast; 

public class ProductListView extends ListActivity { 

    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) {  
     super.onCreate(savedInstanceState); 

     final ProductList pl = new ProductList(); 

     //setListAdapter(new ArrayAdapter<String>(this, R.layout.list_item, PRODUCTS)); 
     setListAdapter(new ArrayAdapter<Product>(this, R.layout.list_item, pl.getList())); 

     ListView lv = getListView(); 
     lv.setTextFilterEnabled(true); 

     lv.setOnItemClickListener(new OnItemClickListener() { 

      public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 

      // When clicked, show a toast with the TextView text 
      Toast.makeText(getApplicationContext(), "View Product", Toast.LENGTH_SHORT).show(); 

      Product product = pl.getList().get(position); 
      // intent stuff for product detail 
      Intent intent = new Intent(ProductListView.this, productdetail.class); 
      //!!!!!!!!!!!!!!!!!!!!!!!!!! 
      //intent.putCharSequenceArrayListExtra("list", pl.getList()); 
      intent.putExtra("name",product.getName()); 
      intent.putExtra("serving size", product.getServingSize()); 
      intent.putExtra("calories", product.getCalories()); 
      intent.putExtra("fat", product.getFat()); 
      intent.putExtra("saturated fat", product.getSaturatedFat()); 
      intent.putExtra("trans fat", product.getTransFat()); 
      intent.putExtra("cholesterol", product.getCholesterol()); 
      intent.putExtra("sodium", product.getSodium()); 
      intent.putExtra("carbs", product.getCarbs()); 
      intent.putExtra("fiber", product.getFiber()); 
      intent.putExtra("sugar", product.getSugar()); 
      intent.putExtra("protein", product.getProtein()); 
      intent.putExtra("vitamina", product.getVitaminA()); 
      intent.putExtra("vitaminc", product.getVitaminC()); 
      intent.putExtra("calcium", product.getCalcium()); 
      intent.putExtra("iron", product.getIron()); 
      intent.putExtra("added", product.getAdded()); 

      ProductListView.this.startActivity(intent); 

      //startActivity(new Intent("kfc.project.productdetail")); 
      } 

     }); 

    } 

} 

現在,這是XML的Java文件,其中我想定義布爾每當BU另一個Java文件的意圖tton被點擊。我怎樣才能做到這一點

package kfc.project; 

import android.app.Activity; 
import android.content.Intent; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.TextView; 

public class productdetail extends Activity{ 

    @Override 
    protected void onCreate(Bundle bundle) { 
     // TODO Auto-generated method stub 
     super.onCreate(bundle); 
     setContentView(R.layout.productdetail); 
     //stuff to get intent 
     Intent receivedIntent = getIntent(); 


     String productName = receivedIntent.getStringExtra("name"); 
     int productServingSize = receivedIntent.getIntExtra("serving size",0); 
     int productCalories = receivedIntent.getIntExtra("calories",0); 
     int productFat = receivedIntent.getIntExtra("fat",0); 
     int productSaturatedFat = receivedIntent.getIntExtra("saturated fat",0); 
     int productTransFat = receivedIntent.getIntExtra("trans fat",0); 
     int productCholesterol = receivedIntent.getIntExtra("cholesterol",0); 
     int productSodium = receivedIntent.getIntExtra("sodium",0); 
     int productCarbs = receivedIntent.getIntExtra("carbs",0); 
     int productFiber = receivedIntent.getIntExtra("fiber",0); 
     int productSugar = receivedIntent.getIntExtra("sugar",0); 
     int productProtein = receivedIntent.getIntExtra("protein",0); 
     int productVitaminA = receivedIntent.getIntExtra ("vitamina",0); 
     int productVitaminC = receivedIntent.getIntExtra ("vitaminc",0); 
     int productCalcium = receivedIntent.getIntExtra ("calcium",0); 
     int productIron = receivedIntent.getIntExtra ("iron",0); 
     boolean added = receivedIntent.getBooleanExtra("added", false); 

     //BUTTONS 
     Button addButton = (Button) findViewById(R.id.button1); 
     Button removeButton = (Button) findViewById(R.id.button3); 

     Bundle extras = getIntent().getExtras(); 

     String name = extras.getString("name"); 

     if (name != null) { 
      TextView text1 = (TextView) findViewById(R.id.productname); 
      text1.setText(productName); 

     } 

     //SHOW/HIDE 'ADD' & 'REMOVE' BUTTONS 
     if (added==false) { 
      //HIDE 'REMOVE' BUTTON 
      removeButton.setVisibility(View.GONE); 
      //SHOW 'ADD' BUTTON 
      addButton.setVisibility(View.VISIBLE); 
     }else{ 
      //SHOW 'REMOVE' BUTTON 
      removeButton.setVisibility(View.VISIBLE); 
      //HIDE 'ADD' BUTTON   
      addButton.setVisibility(View.GONE); 
     } 

     addButton.setOnClickListener(new View.OnClickListener() { 

      public void onClick(View v) { 
       // TODO Auto-generated method stub 
       //added=true; 
      }  
     }); 

     removeButton.setOnClickListener(new View.OnClickListener() { 

      public void onClick(View v) { 
       // TODO Auto-generated method stub 
       //added=false; 
      }  
     }); 


      TextView text2 = (TextView) findViewById(R.id.servingsize); 
      text2.setText(""+productServingSize); 

      TextView text3 = (TextView) findViewById(R.id.calories); 
      text3.setText(""+productCalories); 

      TextView text4 = (TextView) findViewById(R.id.totalfat); 
      text4.setText(""+productFat); 

      TextView text5 = (TextView) findViewById(R.id.saturatedfat); 
      text5.setText(""+productSaturatedFat); 

      TextView text6 = (TextView) findViewById(R.id.transfat); 
      text6.setText(""+productTransFat); 

      TextView text7 = (TextView) findViewById(R.id.cholesterol); 
      text7.setText(""+productCholesterol); 

      TextView text8 = (TextView) findViewById(R.id.sodium); 
      text8.setText(""+productSodium); 

      TextView text9 = (TextView) findViewById(R.id.totalcarbohydrates); 
      text9.setText(""+productCarbs); 

      TextView text10 = (TextView) findViewById(R.id.fiber); 
      text10.setText(""+productFiber); 

      TextView text11 = (TextView) findViewById(R.id.sugar); 
      text11.setText(""+productSugar); 

      TextView text12 = (TextView) findViewById(R.id.protein); 
      text12.setText(""+productProtein); 

      TextView text13 = (TextView) findViewById(R.id.vitamina); 
      text13.setText(""+productVitaminA); 

      TextView text14 = (TextView) findViewById(R.id.vitaminc); 
      text14.setText(""+productVitaminC); 

      TextView text15 = (TextView) findViewById(R.id.calcium); 
      text15.setText(""+productCalcium); 

      TextView text16 = (TextView) findViewById(R.id.iron); 
      text16.setText(""+productIron); 




     /* 
     Intent intent = getIntent(); 
     String str = intent.getStringExtra("name");*/ 

    } 





} 

回答

0

首先,如果你想通過這種在你現在正在做的方式活動之間的信息,你應該讓你的產品類Parcelable和手工傳遞對象,而不是按照你現在所做的方式設置所有的標誌。

然後,一旦您在productdetail活動中檢索產品,就會在對象上使用getter和setter,並且一旦用戶完成,就會將其傳回您之前的活動。

但是,做你想做的事情的正確方法是使用Content Providers:intents不應該被用來傳遞活動之間的產品等持久性信息。

+0

你能否向我提供有關如何操作的代碼示例。 im a noob sorry – user1072908

+0

給我一些關於如何使用我的代碼的代碼 – user1072908

+0

完整的代碼會太長,但這裏是您需要遵循的步驟: 1.將您的產品存儲在內容提供者中:當你他們在內容提供商中創建產品,[添加](http://developer.android.com/guide/topics/providers/content-providers.html#modifying)。 2.現在,您不需要傳遞產品的意圖,而是傳遞產品ID,而在productdetail活動中,您將[加載](http://developer.android.com/guide/topics/providers/content- providers.html#查詢)來自提供商的數據 3.完成添加刪除後,再次保存。 – gianpi

相關問題