2017-01-12 8 views
3

制限を10に設定してsqliteからデータをロードしたアプリケーションを作成しました。リストがスクロールされると、sqliteから別の10個のデータをロードしますこの部分の非同期タスク私はヘッダーグループと子データをフェッチしましたが、新しい日付の子を入れる方法を知らない人は、拡張可能リストビューの特定の親に子を追加する方法を教えてください。拡張可能なリストビューで特定の親に子を追加する方法

非同期タスク:私は混乱しています

class LoadDataTask extends AsyncTask<String, Void, String> { 
    ArrayList<Daybook> daybooks1 = new ArrayList<Daybook>(); 

    @Override 
    protected String doInBackground(String... olimits) { 
     String limits = null; 

     loadingMore = true; 
     try { 
      limits = olimits[0]; 
      grouplistDataHeader = new ArrayList<String>(); 
      grouplistDataChild = new HashMap<String, List<Daybooklist>>(); 
      groupdaybooklists = new ArrayList<Daybooklist>(); 

      databasehandler = new DatabaseHandler(getApplicationContext()); 
      loadeddate = new ArrayList<String>(); 
      String selectquery = "SELECT date,IFNULL(SUM(amountin),0) as amountin,IFNULL(SUM(amountout),0),daybookusertype as amountout FROM daybookdetails GROUP BY strftime('%Y-%m-%d',date) ORDER BY strftime('%Y-%m-%d',date) DESC LIMIT 11,20"; 
      SQLiteDatabase db = databasehandler.getReadableDatabase(); 
      Cursor cursor = db.rawQuery(selectquery, null); 
      if (cursor.moveToFirst()) { 
       do { 
        loadeddate.add(cursor.getString(0)); 
        for (String s : loadeddate) { 
         newdate = s; 

        } 
        String[] spiliter = newdate.split("-"); 
        String year = spiliter[0]; 
        String month = spiliter[1]; 
        String dates = spiliter[2]; 
        if (month.startsWith("01")) { 
         disorderedlist = dates + "Jan" + year; 
         disorderedlist = disorderedlist.replaceAll("\\s+", ""); 
        } else if (month.startsWith("02")) { 
         disorderedlist = dates + "Feb" + year; 
         disorderedlist = disorderedlist.replaceAll("\\s+", ""); 
        } else if (month.startsWith("03")) { 
         disorderedlist = dates + "Mar" + year; 
         disorderedlist = disorderedlist.replaceAll("\\s+", ""); 
        } else if (month.startsWith("04")) { 
         disorderedlist = dates + "Apr" + year; 
         disorderedlist = disorderedlist.replaceAll("\\s+", ""); 
        } else if (month.startsWith("05")) { 
         disorderedlist = dates + "May" + year; 
         disorderedlist = disorderedlist.replaceAll("\\s+", ""); 
        } else if (month.startsWith("06")) { 
         disorderedlist = dates + "Jun" + year; 
         disorderedlist = disorderedlist.replaceAll("\\s+", ""); 
        } else if (month.startsWith("07")) { 
         disorderedlist = dates + "Jul" + year; 
         disorderedlist = disorderedlist.replaceAll("\\s+", ""); 
        } else if (month.startsWith("08")) { 
         disorderedlist = dates + "Aug" + year; 
         disorderedlist = disorderedlist.replaceAll("\\s+", ""); 
        } else if (month.startsWith("09")) { 
         disorderedlist = dates + "Sep" + year; 
         disorderedlist = disorderedlist.replaceAll("\\s+", ""); 
        } else if (month.startsWith("10")) { 
         disorderedlist = dates + "Oct" + year; 
         disorderedlist = disorderedlist.replaceAll("\\s+", ""); 
        } else if (month.startsWith("11")) { 
         disorderedlist = dates + "Nov" + year; 
         disorderedlist = disorderedlist.replaceAll("\\s+", ""); 
        } else if (month.startsWith("12")) { 
         disorderedlist = dates + "Dec" + year; 
         disorderedlist = disorderedlist.replaceAll("\\s+", ""); 
        } 
        for (int i = 0; i < daybooks1.size(); i++) { 
         listDataHeader.add(disorderedlist); 
         groupdaybooklists = databaseHandler.getAllDaywisedaybookdetails(newdate); 
         for (int j = 0; j < groupdaybooklists.size(); j++) { 
          String name = groupdaybooklists.get(j).getName(); 
          String desc = groupdaybooklists.get(j).getDescription(); 
          String type = groupdaybooklists.get(j).getType(); 
          String usertype = groupdaybooklists.get(j).getUsertype(); 
          String amtin = groupdaybooklists.get(j).getAmountin(); 
          String amtout = groupdaybooklists.get(j).getAmountout(); 
          String extamt = groupdaybooklists.get(j).getExtraamt(); 
          String mobno = groupdaybooklists.get(j).getMobileno(); 
          String datess = groupdaybooklists.get(j).getSdate(); 
          String time = groupdaybooklists.get(j).getCtime(); 
          chid.add(new Daybooklist(name, desc, type, usertype, amtin, amtout, extamt, mobno, datess, time)); 

         } 

         listDataChild.put(listDataHeader.get(i), chid); 

        } 



       } while (cursor.moveToNext()); 

      } 


      cursor.close(); 
      db.close(); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 


     return disorderedlist; 
    } 

    @Override 
    protected void onPostExecute(String disorderedlist) { 



     listAdapter.notifyDataSetChanged(); 
     loadingMore = false; 

    } 

パート:

@Override 
protected String doInBackground(String... olimits) { 
    String limits = null; 

    loadingMore = true; 
    try { 
     limits = olimits[0]; 
     grouplistDataHeader = new ArrayList<String>(); 
     grouplistDataChild = new HashMap<String, List<Daybooklist>>(); 
     groupdaybooklists = new ArrayList<Daybooklist>(); 

     databasehandler = new DatabaseHandler(getApplicationContext()); 
     loadeddate = new ArrayList<String>(); 
     String selectquery = "SELECT date,IFNULL(SUM(amountin),0) as amountin,IFNULL(SUM(amountout),0),daybookusertype as amountout FROM daybookdetails GROUP BY strftime('%Y-%m-%d',date) ORDER BY strftime('%Y-%m-%d',date) DESC LIMIT 11,20"; 
     SQLiteDatabase db = databasehandler.getReadableDatabase(); 
     Cursor cursor = db.rawQuery(selectquery, null); 
     if (cursor.moveToFirst()) { 
      do { 
       loadeddate.add(cursor.getString(0)); 
       for (String s : loadeddate) { 
        newdate = s; 

       } 
       String[] spiliter = newdate.split("-"); 
       String year = spiliter[0]; 
       String month = spiliter[1]; 
       String dates = spiliter[2]; 
       if (month.startsWith("01")) { 
        disorderedlist = dates + "Jan" + year; 
        disorderedlist = disorderedlist.replaceAll("\\s+", ""); 
       } else if (month.startsWith("02")) { 
        disorderedlist = dates + "Feb" + year; 
        disorderedlist = disorderedlist.replaceAll("\\s+", ""); 
       } else if (month.startsWith("03")) { 
        disorderedlist = dates + "Mar" + year; 
        disorderedlist = disorderedlist.replaceAll("\\s+", ""); 
       } else if (month.startsWith("04")) { 
        disorderedlist = dates + "Apr" + year; 
        disorderedlist = disorderedlist.replaceAll("\\s+", ""); 
       } else if (month.startsWith("05")) { 
        disorderedlist = dates + "May" + year; 
        disorderedlist = disorderedlist.replaceAll("\\s+", ""); 
       } else if (month.startsWith("06")) { 
        disorderedlist = dates + "Jun" + year; 
        disorderedlist = disorderedlist.replaceAll("\\s+", ""); 
       } else if (month.startsWith("07")) { 
        disorderedlist = dates + "Jul" + year; 
        disorderedlist = disorderedlist.replaceAll("\\s+", ""); 
       } else if (month.startsWith("08")) { 
        disorderedlist = dates + "Aug" + year; 
        disorderedlist = disorderedlist.replaceAll("\\s+", ""); 
       } else if (month.startsWith("09")) { 
        disorderedlist = dates + "Sep" + year; 
        disorderedlist = disorderedlist.replaceAll("\\s+", ""); 
       } else if (month.startsWith("10")) { 
        disorderedlist = dates + "Oct" + year; 
        disorderedlist = disorderedlist.replaceAll("\\s+", ""); 
       } else if (month.startsWith("11")) { 
        disorderedlist = dates + "Nov" + year; 
        disorderedlist = disorderedlist.replaceAll("\\s+", ""); 
       } else if (month.startsWith("12")) { 
        disorderedlist = dates + "Dec" + year; 
        disorderedlist = disorderedlist.replaceAll("\\s+", ""); 
       } 
       for (int i = 0; i < daybooks1.size(); i++) { 
        listDataHeader.add(disorderedlist); 
        groupdaybooklists = databaseHandler.getAllDaywisedaybookdetails(newdate); 
        for (int j = 0; j < groupdaybooklists.size(); j++) { 
         String name = groupdaybooklists.get(j).getName(); 
         String desc = groupdaybooklists.get(j).getDescription(); 
         String type = groupdaybooklists.get(j).getType(); 
         String usertype = groupdaybooklists.get(j).getUsertype(); 
         String amtin = groupdaybooklists.get(j).getAmountin(); 
         String amtout = groupdaybooklists.get(j).getAmountout(); 
         String extamt = groupdaybooklists.get(j).getExtraamt(); 
         String mobno = groupdaybooklists.get(j).getMobileno(); 
         String datess = groupdaybooklists.get(j).getSdate(); 
         String time = groupdaybooklists.get(j).getCtime(); 
         chid.add(new Daybooklist(name, desc, type, usertype, amtin, amtout, extamt, mobno, datess, time)); 

        } 

        listDataChild.put(listDataHeader.get(i), chid); 

       } 



      } while (cursor.moveToNext()); 

     } 


     cursor.close(); 
     db.close(); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 


    return disorderedlist; 
} 
+0

データがsqliteに格納される方法のスナップショットを投稿できます – avinash

+0

子リストの各グループの最後の子として追加する必要があります。 getChildView()メソッドの条件を追加して、行が子タイプかより多くのタイプをロードしているかを確認します。 –

+0

この前の返信を確認してください: [** http://stackoverflow.com/a/15348971/2153132**](http://stackoverflow.com/a/15348971/2153132) –

答えて

0

あなたはonCreateメソッド内のListViewのアダプタを初期化する必要があります:バックグラウンド方法では、あなただけのデータをロードして、いくつかのクラスatributeに保存する必要があり、後

listView.setAdapter(adapter); // Pode ser com as listas vazias 

。後、onPostResult方法では、あなたは、アダプタを更新し、リストビューに通知する必要があります。

protected void onPostExecute(String disorderedlist) { 
    adapter.addGroupList(groupList); // Need to implement the method in the adapter 
    adapter.addChildList(childList); // Need to implement the method in the adapter 
    adapter.notifyDataSetChanged(); 
    loadingMore = false; 
} 

これは、あなたのロジックに変更アイデアです。

関連する問題