2016-10-19 14 views
0

単純なAdapter.iを使用してリストビューを作成しました。キーと値(HashMap)の形式で行データを取得しています.i特定の行をデータベースに挿入したいのですが、問題は行データを取得するときですアイテムが1より大きい場合、キーと値の形式で来て、データベースの次の行にどのようにデータを追加することができますか。リストビューからデータをMapの形式で取得すると、特定の行データをデータベースに追加するにはどうすればよいですか?

これは、メソッド()私はリストビューにシンプルなアダプタを設定し、マップから各項目を反復処理していたことである: -

private void showList(List<LineItem> list) { 

     saleList = new ArrayList<Map<String, String>>(); 
     for (LineItem line : list) { 
      saleList.add(line.toMap()); 
     } 


     SimpleAdapter sAdap; 
     sAdap = new SimpleAdapter(getActivity().getBaseContext(), saleList, 
       R.layout.listview_lineitem, new String[]{"name", "quantity", "price"}, new int[]{R.id.name, R.id.quantity, R.id.price}); 
     saleListView.setAdapter(sAdap); 


     for (Map<String, String> map : saleList) { 

      Iterator iterator = map.entrySet().iterator(); 
      while (iterator.hasNext()) { 

       Map.Entry pair = (Map.Entry) iterator.next(); 

      Log.e("key..::>>", "" + pair.getKey()); 
      Log.e("value..::>>", "" + pair.getValue());. 
      } 
} 
} 

そして、これが私のモデルクラスである: -

public class LineItem { 

    private final Product product; 
    private int quantity; 
    private int id; 
    private double unitPriceAtSale; 




    public static final int UNDEFINED = -1; 


    public LineItem(Product product, int quantity) { 
     this(UNDEFINED, product, quantity, product.getUnitPrice()); 
    } 

    public LineItem(Product product) { 
     this.product = product; 
    } 


    public LineItem(int id, Product product, int quantity, 
        double unitPriceAtSale) { 
     this.id = id; 
     this.product = product; 
     this.quantity = quantity; 
     this.unitPriceAtSale = unitPriceAtSale; 
    } 


    public Product getProduct() { 
     return product; 
    } 


    public int getQuantity() { 
     return quantity; 
    } 


    public void setQuantity(int quantity) { 
     this.quantity = quantity; 
    } 


    public void addQuantity(int amount) { 
     this.quantity += amount; 
    } 


    public double getTotalPriceAtSale() { 
     return unitPriceAtSale * quantity; 
    } 


    public Map<String, String> toMap() { 
     Map<String, String> map = new HashMap<String, String>(); 
     map.put("name", product.getName()); 
     map.put("quantity", quantity + ""); 
     map.put("price", getTotalPriceAtSale() + ""); 
     return map; 

    } 


    public int getId() { 
     return id; 
    } 


    public void setId(int id) { 
     this.id = id; 
    } 


    public void setUnitPriceAtSale(double unitPriceAtSale) { 
     this.unitPriceAtSale = unitPriceAtSale; 
    } 


    public Double getPriceAtSale() { 
     return unitPriceAtSale; 
    } 


    @Override 
    public boolean equals(Object object) { 
     if (object == null) 
      return false; 
     if (!(object instanceof LineItem)) 
      return false; 
     LineItem lineItem = (LineItem) object; 
     return lineItem.getId() == this.getId(); 
    } 
} 

私は名前、価格、数量を正しく取得しています。データベースに名前、価格、数量を追加したいのですが、問題はキーと値の形式で名前、価格、 。私はデータベースにこれらのものを追加することを考えていますが、私はミューを持っているときに私はデータベースにデータを挿入することができます複数の行のデータをデータベースに挿入したいのです(リストビューの行データのように、データベースにデータを追加したい) 。

私logcatは、次のとおりです。 -

10-19 16:56:59.824 18890-18890/com.refresh.pos E/key..::>>: quantity 
    10-19 16:56:59.824 18890-18890/com.refresh.pos E/value..::>>: 1 
    10-19 16:56:59.824 18890-18890/com.refresh.pos E/key..::>>: price 
    10-19 16:56:59.824 18890-18890/com.refresh.pos E/value..::>>: 200.0 
    10-19 16:56:59.824 18890-18890/com.refresh.pos E/key..::>>: name 
    10-19 16:56:59.824 18890-18890/com.refresh.pos E/value..::>>: aman 
    10-19 16:56:59.824 18890-18890/com.refresh.pos E/key..::>>: quantity 
    10-19 16:56:59.824 18890-18890/com.refresh.pos E/value..::>>: 2 
    10-19 16:56:59.824 18890-18890/com.refresh.pos E/key..::>>: price 
    10-19 16:56:59.824 18890-18890/com.refresh.pos E/value..::>>: 5556.0 
    10-19 16:56:59.824 18890-18890/com.refresh.pos E/key..::>>: name 
    10-19 16:56:59.824 18890-18890/com.refresh.pos E/value..::>>: cghg 

i want to add item in database like :- 
three fields :- quantity price  name 
        1  200.0  aman 
        2  5556.0 cghg 
I hope anyone understand now what i want to do. 
+0

私が理解する限り、名前、価格、数量をデータベースに保存したいとします。それは正しいですか? –

+0

@Mohammad Zはい!しかし、私はハッシュマップからデータを取得しているとき、私はキーとvalue.thenの形で取得しているどのように私のlogcatを参照してくださいmuliple rows.pleaseでデータベースのsavedataことができます。私はそれを更新しました。あなたが理解することを願っています。 – LoveAndroid

+0

hashmapオブジェクトの複数の値が正しいと思いますか?価格= 8999、数量= 900、名前= "yyy"、価格= 6779、数量= 700 –

答えて

0

私は "saleListは、" マップオブジェクトを持つと考えてください。したがって、各マップオブジェクトは1つの行です。

ContentValues cv=new ContentValues(); 
    for (Map<String, String> map : saleList) { 

     Iterator iterator = map.entrySet().iterator(); 
     while (iterator.hasNext()) { 

      Map.Entry pair = (Map.Entry) iterator.next(); 

     if(pair.getKey().equals("name")){ 
      cv.put(pair.getKey(),pair.getKey()); 

     }else if(pair.getKey().equals("price")){ 
     cv.put(pair.getKey(),pair.getKey()); 
     }else{ 
      cv.put(pair.getKey(),pair.getKey()); 


     } 
     //here insert your contentvalues to db 


     } 
    } 

私は、名前、価格、数量のような3つの値しか持たないそれぞれのマップを感じました。

それが正しくない場合は、これらの変数で、各行 のモデルクラスを作成し、 のArrayListにモデルクラスのオブジェクトを挿入する必要があります。データを行として簡単に取得できます。

+0

これは動作していません!それらの変数でモデルクラスを作成している場合、どのようにそれらの変数にデータを追加できますか? – LoveAndroid

関連する問題