2014-03-07 165 views
0

我想將我的第一項活動中的所有選定項目發送到選中項目上的其他活動。在我的應用程序中有三個類首先是Appetizer類,第二類是ItemListBaseAdapter類,第三類是Manage類我想將Appetizers類中的選中項目發送到Manage類。如果您需要了解其他任何信息,請告訴我。 這是我的菜類如何將項目從一項活動發送到另一項檢查項目

public class Appetizers extends Activity{ 

Button manage; 
public static final String[] titles = new String[] { "Aloo Chat", 
     "Paneer Tikka", "Spring Roll", "Paneer Chilly", "Veg Roll","Rice balls","Pasta", }; 
public static final String totalPrice="0"; 
public static final int[] quantities = new int[]{ 0 }; 
public static final String[] price={"20","10","30","40","50","60","10"}; 

public static final Integer[] images = { R.drawable.a39, 
     R.drawable.a40, R.drawable.a41, R.drawable.a42,R.drawable.a74,R.drawable.a75,R.drawable.a76 }; 
public ItemListBaseAdapter adapter; 
ListView listView; 
public List<RowItem> rowItems; 
Button add,sub; 
public static Appetizers apti; 
public RowItem item; 

/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    apti=this; 
// LinearLayout layout = (LinearLayout) getWindow().findViewById(R.id.button1); 
// layout.addView(new Button(this)); 
    manage=(Button) findViewById(R.id.manage); 
    rowItems = new ArrayList<RowItem>(); 
    for (int i = 0; i < titles.length; i++) { 
     item = new RowItem(images[i], titles[i], quantities[0],price[i],totalPrice); 
     rowItems.add(item); 
     Log.e("item in appetizer", ""+item); 
     manage.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       // TODO Auto-generated method stub 

       // intt.putParcelable("myclass",rowItems); 
       // intt.putStringArrayListExtra("key", rowItems); 
       Intent i=new Intent(Appetizers.this,Manage.class); 
       startActivity(i); 



      } 
     }); 

    } 


    listView = (ListView) findViewById(R.id.list); 
    ItemListBaseAdapter adapter = new ItemListBaseAdapter(this, 
      R.layout.item_details_view, rowItems); 
    Log.e("Row items in appetizer",""+rowItems); 
    listView.setAdapter(adapter); 


} 
} 

這是我ItemListBaseAdapter類

class ItemListBaseAdapter extends ArrayAdapter<RowItem> { 
    public static ItemListBaseAdapter adapter; 
    Context context; 
    int getPosition; 
    int rowItem; 
    String check1; 

    public List<RowItem> rowItems; 

    /* 
    * here we must override the constructor for ArrayAdapter the only variable 
    * we care about now is ArrayList<RowItem> objects, because it is the list 
    * of objects we want to display. 
    */ 

    public ItemListBaseAdapter(Context context, int resourceId, 
      List<RowItem> items) { 
     super(context, resourceId, items); 
     this.context = context; 
     adapter=this; 
    } 

    /* private view holder class */ 
    private class ViewHolder { 
     ImageView imageView; 
     TextView txtTitle,txtPrice,ttprice; 
     TextView txtDesc; 
     Button add, sub,manage; 
     CheckBox check; 

    } 

    /* 
    * we are overriding the getView method here - this is what defines how each 
    * list item will look. 
    */ 
    public View getView(final int position, View convertView, ViewGroup parent) { 

     ViewHolder holder = null; 

     // first check to see if the view is null. if so, we have to inflate it. 
     // to inflate it basically means to render, or show, the view. 
     if (convertView == null) { 
      LayoutInflater mInflater = (LayoutInflater) context 
        .getSystemService(Activity.LAYOUT_INFLATER_SERVICE); 

      convertView = mInflater.inflate(R.layout.item_details_view, null); 
     } 

     /* 
     * Recall that the variable position is sent in as an argument to this 
     * method. The variable simply refers to the position of the current 
     * object in the list. (The ArrayAdapter iterates through the list we 
     * sent it) 
     * 
     * Therefore, rowItem refers to the current RowItem object. 
     */ 
     RowItem rowItem = getItem(position); 
     if (rowItem != null) { 
      holder = new ViewHolder(); 
      // This is how you obtain a reference to the TextViews 
      // Images,checkBox,Buttons. 
      // These TextViews are created in the XML files we defined. 

      holder.txtDesc = (TextView) convertView.findViewById(R.id.desc); 
      holder.txtTitle = (TextView) convertView.findViewById(R.id.title); 
      holder.txtPrice = (TextView) convertView.findViewById(R.id.price); 
      holder.ttprice=(TextView) convertView.findViewById(R.id.tPrice); 

      holder.imageView = (ImageView) convertView.findViewById(R.id.icon); 
      holder.check = (CheckBox) convertView.findViewById(R.id.checkBox1); 
      holder.add = (Button) convertView.findViewById(R.id.button1); 
      holder.sub = (Button) convertView.findViewById(R.id.button2); 
     // holder.manage = (Button) convertView.findViewById(R.id.manage); 






//   holder.check.setOnClickListener(new View.OnClickListener() { 
//    public void onClick(View v) { 
//    CheckBox cb = (CheckBox) v ; 
//    RowItem rowItem = (RowItem) cb.getTag(); 
//    Toast.makeText(context,"Clicked on Checkbox: " + cb.getText() +" is " + cb.isChecked(), Toast.LENGTH_LONG).show(); 
//    rowItem.setSelected(cb.isChecked()); 
//    } 
//    }); 

      /* 
      * holder.check.setOnClickListener(new View.OnClickListener() { 
      * public void onClick(View v) { CheckBox cb = (CheckBox) v ; 
      * RowItem rowItem = (RowItem) cb.getTag(); Toast.makeText(context, 
      * "Clicked on Checkbox: " + cb.getText() + " is " + cb.isChecked(), 
      * Toast.LENGTH_LONG).show(); rowItem.setSelected(cb.isChecked()); } 
      * }); 
      */ 
     } else 
     { 
      holder = (ViewHolder) convertView.getTag(); 
     } 
      /*holder = (ViewHolder) convertView.getTag(); 

     *rowItem = rowItems.get(position); holder.txtTitle.setText(" (" + 
     *rowItem.getTitle() + ")"); holder.check.setText(rowItem.getName()); 
     *holder.check.setChecked(rowItem.isSelected()); 
     * holder.check.setTag(rowItem); 
     */ 

     holder.txtDesc.setText(rowItem.getDesc()); 
     holder.txtTitle.setText(rowItem.getTitle()); 
     holder.txtPrice.setText(rowItem.getPrice()); 
     Log.e("title",""+rowItem.getTitle()); 
     Log.d("description",""+rowItem.getDesc()); 
     Log.e("Price",""+rowItem.getPrice()); 


     holder.imageView.setImageResource(rowItem.getImageId()); 
     holder.add.setTag(position); 
     holder.sub.setTag(position); 
     //holder.manage.setTag(position); 
     holder.check.setTag(position); 

     holder.add.setEnabled(false); 
     holder.sub.setEnabled(false); 

     final RowItem finalRowItem = rowItem; 
     final ViewHolder viewHolderFinal = holder; 

     holder.add.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 

       int quantity = finalRowItem.getQuantity(); 


       if (quantity >= 0) { 
        finalRowItem.setQuantity(quantity + 1); // update it by adding 1 
        quantity=finalRowItem.getQuantity(); 
        if (quantity>=1) { 
         String p=finalRowItem.getPrice(); 
         int x=Integer.parseInt(p); 
         int y=quantity*x; 
         String f=Integer.toString(y); 
         finalRowItem.setTotalPrice(f); 
         viewHolderFinal.ttprice.setText(finalRowItem.getTotalPrice()); 

        } 


        viewHolderFinal.add.setEnabled(true); 
        viewHolderFinal.sub.setEnabled(true); 

       } else { 
        viewHolderFinal.add.setEnabled(false); 
        viewHolderFinal.sub.setEnabled(false); 
       } 
       // get the quantity for this row item 

       viewHolderFinal.txtDesc.setText(finalRowItem.getDesc()); 

       viewHolderFinal.add.setEnabled(true); 
       viewHolderFinal.sub.setEnabled(true); 
       String check =finalRowItem.getDesc()+finalRowItem.getTitle() +finalRowItem.getPrice()+finalRowItem.getTotalPrice(); 
        Toast.makeText(context,"Clicked on Checkbox check1: " +finalRowItem.getDesc()+finalRowItem.getTitle() +finalRowItem.getPrice()+finalRowItem.getTotalPrice(), Toast.LENGTH_LONG).show(); 
        Intent intt=new Intent(context,Manage.class); 
        intt.putExtra("allItem", check); 
        Log.d("final description in add", finalRowItem.getDesc()); 
       // set the new description (that uses the updated qunatity) 
      } 
     }); 

     holder.sub.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 

       int quantity = finalRowItem.getQuantity(); 
       if (quantity == 1) { 
        finalRowItem.setQuantity(quantity - 1); 
        Toast.makeText(context, "Item is unchecked", Toast.LENGTH_LONG).show(); 
        viewHolderFinal.check.setChecked(false); 
        viewHolderFinal.add.setEnabled(false); 
        viewHolderFinal.sub.setEnabled(false); 

       } else { 

        viewHolderFinal.add.setEnabled(true); 
        viewHolderFinal.sub.setEnabled(true); 
       } 

       // get the quantity for this row item 
       finalRowItem.setQuantity(quantity - 1); 

       quantity=finalRowItem.getQuantity(); 

        String p=finalRowItem.getPrice(); 
        int x=Integer.parseInt(p); 
        int y=quantity*x; 
        String f=Integer.toString(y); 
        finalRowItem.setTotalPrice(f); 
        viewHolderFinal.ttprice.setText(finalRowItem.getTotalPrice()); 
        //Toast.makeText(context, "898798",0).show(); 


       // update it by subtracting 1 
       viewHolderFinal.txtDesc.setText(finalRowItem.getDesc()); 
       Log.d("final description in sub", finalRowItem.getDesc()); 
       // set the new description (that uses the updated qunatity) 

      } 
     }); 
     // the view must be returned to our activity 
     //Toast.makeText(context,"Quantity selected"+finalRowItem.getTotalPrice() ,Toast.LENGTH_SHORT).show(); 
     holder.check.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 

       CheckBox cb = (CheckBox) v; 

       if (cb.isChecked()) { 
        Log.d("checkbox checked", "checkbox checked"); 
        // RowItem finalRowItem = (RowItem) cb.getTag(); 
         Toast.makeText(context,"Clicked on Checkbox: " +finalRowItem.getTitle() +finalRowItem.getPrice()+finalRowItem.getDesc()+" is " + cb.isChecked(), Toast.LENGTH_LONG).show(); 



        // finalRowItem.setSelected(cb.isChecked()); 
        viewHolderFinal.add.setEnabled(true); 
        viewHolderFinal.sub.setEnabled(true); 


        finalRowItem.quantity =finalRowItem.getQuantity(); 

        finalRowItem.quantity = 1; 
        viewHolderFinal.txtDesc.setText(finalRowItem.getDesc()); 
        if (finalRowItem.quantity>=1) { 
         Log.e("checkbox checked-2", "checkbox checked-2"); 
         String p=finalRowItem.getPrice(); 
         int x=Integer.parseInt(p); 
         int y=finalRowItem.quantity*x; 
         String f=Integer.toString(y); 
         finalRowItem.setTotalPrice(f); 
         viewHolderFinal.ttprice.setText(finalRowItem.getTotalPrice()); 
         //Toast.makeText(context, "898798",0).show(); 
          Toast.makeText(context,"Clicked on Checkbox check1: " +finalRowItem.getTitle() +finalRowItem.getPrice()+finalRowItem.getTotalPrice()+" is " + cb.isChecked(), Toast.LENGTH_LONG).show(); 

        } 
       } else { 

        if (finalRowItem.quantity>=1) { 
         Log.d("checkbox checked-3", "checkbox checked-3"); 
         String p=finalRowItem.getPrice(); 
         int x=Integer.parseInt(p); 
         int y=finalRowItem.quantity*x; 
         y=0; 
         String f=Integer.toString(y); 
         finalRowItem.setTotalPrice(f); 
         viewHolderFinal.ttprice.setText(finalRowItem.getTotalPrice()); 
         //Toast.makeText(context, "898798",0).show(); 
        } 
        finalRowItem.quantity = finalRowItem.getQuantity(); 
        if (finalRowItem.quantity > 0) { 
         finalRowItem.quantity = 0; 
        } 
        viewHolderFinal.txtDesc.setText(finalRowItem.getDesc()); 
         Toast.makeText(context,"Clicked on Checkbox check2: " +finalRowItem.getTitle() +finalRowItem.getPrice()+finalRowItem.getDesc()+finalRowItem.getQuantity()+" is " + cb.isChecked(), Toast.LENGTH_LONG).show(); 
        viewHolderFinal.add.setEnabled(false); 
        viewHolderFinal.sub.setEnabled(false); 

       } 

      } 
     }); 





     return convertView; 
    } 



} 
+0

使用sharedPreferences。 – user2699728

+0

@ user2699728可以請你告訴我如何使用prefergies – Illusionist

+0

檢查我的答案,並讓我知道它是否適合你。 – user2699728

回答

0

有兩個更簡單的方法,通過它可以從一個類項目發送到另一個:

1. Save the items in SharedPrefernces and access them in another class. 

2. Send them as part of intent using putExtra() api. 
+0

我使用了第二種方法,但它不適用於我,請您詳細說明我們如何從共享偏好做到 – Illusionist

+0

第一種方法沒有多大意義。建議SharedPreference在你打算在應用程序關閉後保留更改時使用。 –

+1

使用共享prefrence不是正確的方法,儘管它似乎可以解決您的目的。共享首選項並不意味着在視圖之間傳輸數據。使對象處於可分析狀態並使用意向發送。 –

0

寫下你的班級實施Parcelable。通過它的實例超出意圖。

查看this的使用情況。

0

在您的MainActivity或您想要發送給其他活動的值的活動寫在代碼下面。

SharedPreferences app_preferences = PreferenceManager 
         .getDefaultSharedPreferences(MainActivity.this); 
       SharedPreferences.Editor editor = app_preferences.edit(); 

       editor.putString("Username", YOUR STRING); 
       editor.putString("EMAIL", YOUR STRING); 
       editor.commit(); 

它的鍵值對,其中的用戶名和電子郵件地址爲鍵和值將是你的字符串,你必須發送給其他活動。

然後在您想要檢索數據的其他活動中添加以下代碼。

SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this); 
     String text = preferences.getString("Username", "null"); 
     String Email1=preferences.getString("EMAIL", "null"); 
     String Email=Email1.toString(); 

希望這會有所幫助。

+0

它沒有爲我工作,你可以告訴我,我應該在我的代碼中使用偏好。 – Illusionist

+0

你想要發送什麼?它是一個字符串? – user2699728

+0

我想將選中(選中)的項目,數量,標題,價格從我的列表中發送到管理類 – Illusionist

相關問題