在android(SQLITE DB)

时间:2016-11-01 06:40:06

标签: android sqlite android-fragments

我有3个片段。 (HOME,MENU,CART)

当用户点击MENU FRAGMENT中的项目时,单击的项目将进入SQLite表格(使用INSERT QUERY)。

在购物车片段中,我使用选择查询显示用户从“菜单碎片”中选择的项目。

所以,这一切都在发生。

问题:

  1. on MENU FRAGMENT:用户点击商品并将其添加到购物车(插入成功完成)
  2. 用户使用CART FRAGEMENT。更新的值未显示在CART FRAGMENT
  3. 现在,如果用户转到其他片段,然后返回,则会显示更新的值。
  4. 快照:

    1. 用户将菜单'Sada Uthappa'从MENU FRAGMENT添加到购物车。
    2. MENU FRAGMENT

      1. 用户现在转到CART片段,显示为空。
      2. enter image description here

        1. 用户转到其他片段(如HOME,MENU),然后转到CART Fragment。 瞧。更新后的结果。
        2. enter image description here

          要获取CART FRAGMENT中的更新数据,我必须单击HOME片段,然后单击MENU片段然后单击CART片段。

          MENU碎片代码:

          以下是MENU Fragment的代码:我在Add to cart Button上调用此方法

          public void onAddToCart(){
              databaseHelper.onCreate();
              success=databaseHelper.onInsert(iname.getText().toString(),qty.getText().toString(),t11.getText().toString());
              Toast.makeText(getContext(),"Row id affected : "+success,Toast.LENGTH_SHORT).show();
          }
          

          以下是来自DatabaseHelper类的代码onInsert():

           public long onInsert(String itemName,String qty,String price){
              SQLiteDatabase db=this.getWritableDatabase();
              ContentValues contentvalue=new ContentValues();
              contentvalue.put("NAME",itemName);
              contentvalue.put("QTY",Integer.parseInt(qty));
              contentvalue.put("PRICE",Integer.parseInt(price));
              long result=db.insert(table,null,contentvalue);
              return result;
          }
          

          CART FRAGMENT CODE:

           public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
               view=inflater.inflate(R.layout.fragment_mycart,container,false);
               cartlistview=(ListView)view.findViewById(R.id.listView1);
          
              db=new DatabaseHelper(this.getContext());
              db.onCreate();
              Cursor res=db.onView();
              int len=res.getCount();
          
              listCartItems = new ArrayList<CartItems>();
              listCartItems.add(new CartItems(0,"Item Name", "Quantity", "Price","Delete"));
          
              if(len==0)
              {
                  Toast.makeText(this.getContext(),"Cart is Empty.",Toast.LENGTH_SHORT).show();
                  statusOfCart=false;
              }
              else {
                  while (res.moveToNext()) {
                      int id=res.getInt(0);
                      String itemname = res.getString(1).toString();  // 0 is id, 1 is name, 2 is qty, 3 price
                      String itemqty = Integer.toString(res.getInt(2));
                      String itemprice = Integer.toString(res.getInt(3)) ;
                      Toast.makeText(this.getContext(),itemname,Toast.LENGTH_SHORT).show();
                      listCartItems.add(new CartItems(id,itemname, itemqty, itemprice,"X"));
                  }
              }
              CartListAdapter cartListAdapter = new CartListAdapter(getContext(), R.layout.cartlist_layout, listCartItems);
              cartlistview.setAdapter(cartListAdapter);
          
              return view;
          }
          

1 个答案:

答案 0 :(得分:1)

  

当初始化视图寻呼机时,初始化3个片段,其中当前显示一个和相邻的两个片段。

     

首先初始化onCreateView(...)。

在第一个片段中修改后,除非更新发生,否则不会更新第三个片段。

所以在Fragment中有一个方法

@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
    super.setUserVisibleHint(isVisibleToUser);
     if(isVisibleToUser){
    //update fragment
    //do you code}
}