2016-06-06 9 views
0

Ich versuche, ein Restaurant-Menü mit Bestellfunktion zu machen. Es gibt eine einfache Listenansicht mit Produktnamen, Preis und Hinzufügen, Schaltflächen entfernen. Was ich will ist, wenn ein Benutzer auf die Schaltfläche "HINZUFÜGEN" klickt, der Produktname und Preis wird zu einer Arraylist oder etwas hinzugefügt, so dass ich diese Liste in einer anderen Aktivität abrufen und den Gesamtpreis anzeigen kann. Ich kann SQLite verwenden, um die Artikel zu speichern, aber dann weiß ich nicht, wie man den Preis jedes ausgewählten Produkts (in der zweiten Aktivität) zum Hinzufügen erhält. Gibt es eine besondere Möglichkeit, Elemente wie POJO und Adapter zu speichern?Hinzufügen/Entfernen von Produkten zum Warenkorb in der Listenansicht

public class MainActivity extends AppCompatActivity { 
 

 
    private ListView listView; 
 
    private ArrayList<Model> mListData; 
 
    private CustomListAdapter adapter; 
 

 
    @Override 
 
    protected void onCreate(Bundle savedInstanceState) { 
 

 
     super.onCreate(savedInstanceState); 
 
     setContentView(R.layout.activity_main); 
 

 
     listView = (ListView)findViewById(R.id.list); 
 

 
     mListData = new ArrayList<>(); 
 

 
     mListData.add(new Model("Beef Manhattan", "50")); 
 
     mListData.add(new Model("Chicken Fried Steak", "90")); 
 
     mListData.add(new Model("Corned Beef", "100")); 
 
     mListData.add(new Model("Domesticated Turkey", "80")); 
 
     mListData.add(new Model("Eggs Benedict", "10")); 
 
     mListData.add(new Model("French Dip", "20")); 
 
     mListData.add(new Model("Green Bean Casserole", "30")); 
 
     mListData.add(new Model("Potato Salad", "40")); 
 
     mListData.add(new Model("Pumpkin Pie", "60")); 
 
     mListData.add(new Model("Salisbury Steak", "70")); 
 

 
     adapter = new CustomListAdapter(this, R.layout.listrow, mListData); 
 
     listView.setAdapter(adapter); 
 

 
    } 
 

 
}
public class CustomListAdapter extends ArrayAdapter<Model> { 
 

 
    private Context mContext; 
 
    int resource; 
 
    private ArrayList<Model> mListData = new ArrayList<Model>(); 
 

 

 
    public CustomListAdapter(Context mContext, int resource, ArrayList<Model> mListData) { 
 
     super(mContext, resource, mListData); 
 
     this.resource = resource; 
 
     this.mContext = mContext; 
 
     this.mListData = mListData; 
 
    } 
 

 
    public void setListData(ArrayList<Model> mListData) { 
 
     this.mListData = mListData; 
 
     notifyDataSetChanged(); 
 
    } 
 

 
    @Override 
 
    public int getCount() { 
 
     return super.getCount(); 
 
    } 
 

 
    @Override 
 
    public View getView(int position, View convertView, ViewGroup parent) { 
 
     View v = convertView; 
 
     ViewHolder holder; 
 
     if (v == null) { 
 
      holder = new ViewHolder(); 
 

 
      LayoutInflater inflater = ((Activity) mContext).getLayoutInflater(); 
 

 
       v = inflater.inflate(resource, parent, false); 
 

 
       holder.name = (TextView) v.findViewById(R.id.name); 
 
       holder.rate = (TextView) v.findViewById(R.id.rate); 
 
       holder.add = (Button) v.findViewById(R.id.add); 
 
       holder.remove = (Button) v.findViewById(R.id.remove); 
 

 

 
      v.setTag(holder); 
 
     } else { 
 
      holder = (ViewHolder) v.getTag(); 
 
     } 
 

 

 

 

 
     Model item = mListData.get(position); 
 

 
      holder.name.setText(item.getName()); 
 
      holder.rate.setText(item.getRate()); 
 

 
     return v; 
 
    } 
 

 
    class ViewHolder { 
 

 
     TextView name; 
 
     TextView rate; 
 
     Button add; 
 
     Button remove; 
 
    } 
 

 
}
public class Model { 
 

 
    private String name, rate; 
 

 
    public Model(String name, String rate) { 
 
     this.name = name; 
 
     this.rate = rate; 
 
    } 
 

 
    public String getName() { 
 
     return name; 
 
    } 
 

 
    public void setName(String name) { 
 
     this.name = name; 
 
    } 
 

 
    public String getRate() { 
 
     return rate; 
 
    } 
 

 
    public void setRate(String rate) { 
 
     this.rate = rate; 
 
    } 
 

 

 
}

+0

http://www.androiddom.com/2011/06/android-shopping-cart-tutorial-part-2.html –

+0

Sie wissen nicht, wie SQL SUM Anweisung zu verwenden ? –

+0

@ cricket_007. Nein, ich habe es bis jetzt nicht benutzt. Kannst du mir ein Beispiel geben, wie ich Db-Objekte zu listview holen werde? –

Antwort

0

Dies kann Ihnen helfen,

Erstellen Sie eine boolean Variable isSelected in Ihrer Modellklasse und ordnen Anfangs val als falsch, wenn er die Zeile oder klicken Sie auf Hinzufügen auswählt machen isSelected Variable dieses Objekts zu wahr. Übergeben Sie die ArrayList des Objekts an die zweite Aktivität und verwenden Sie foreach oder for und check für isSelected, wenn isSelected true ist, dann erhalten Sie ammount und add. Das ist es. Probieren Sie es aus, es wird funktionieren :)

+0

Ich benutze auch gleiche Ansatz, aber es fühlt sich irgendwie nicht der beste Weg: D – dgngulcan

+0

Seine Arbeit gut für kleine Menge von Daten, falls es mehr als 1MB Daten die Absicht kann nicht nehmen, dass Gewicht und Anwendung kann abstürzen, so müssen Betrachte diesen Fall, falls es eine große Menge von Daten gibt, die du übergeben musst, dann ist es besser, das Ergebnis statisch zu speichern und durch die Singleton-Klasse zuzugreifen. –

+0

@Somnath Pal hast du die Lösung bekommen? –

Verwandte Themen