簡體   English   中英

如何在expandable listview android中將子項添加到特定父項

[英]How to add a child to particular parent in expandable listview android

我創建了一個應用程序,其中我通過設置限制為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;
}

您需要在onCreate方法中初始化listView的適配器:

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

之后,在后台方法中,您只需要加載數據並保存在某個類屬性中。 之后,在onPostResult方法中,您需要更新適配器並通知listView:

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;
}

這是一個想法,改變你的邏輯。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM