重复我从sql数据库到android listview的数据

问题描述

我正在从sql数据库获取数据到android Expandable listview。 我的所有数据都是正确的,只是listview组重复了相同数量的listview子级。

我不知道为什么,我已经尝试了所有想到的东西。 无论如何,我正在使用2个查询一个让小组,另一个让小组孩子!

这是我的代码AsyncTask:

    
     private class SyncData extends AsyncTask<String,String,String> {
            String msg;
    
    
            @Override
            protected void onPreExecute() //Starts the progress dailog
            {
    
                System.out.println("Start");
    
                //lottieAnimationView.playAnimation();
               progressDialog.show();
            }
    
            @Override
            protected String doInBackground(String... strings)  // Connect to the database,write query and add items to array list
            {
    
    
    
                try {
                    Connection conn = connectionClass.CONN(); //Connection Object
                    if (conn == null) {
                        success = false;
                        msg = "Sorry something went wrong,Please check your internet connection";
                    } else {
                        // Change below query according to your own database.
    
                        String query = "SELECT SalesInvoice.SalesInvoiceID,SalesInvoice.SalesInvoiceSerial,SalesInvoice.SalesInvoiceDate,SalesInvoice.SalesInvoiceItemCount,SalesInvoice.SalesInvoicetotal,SalesInvoice.SalesInvoiceTaxs,SalesInvoice.SalesInvoiceLastTotal,SalesInvoice.SalesInvoiceBranchID FROM SalesInvoice where SalesInvoiceID = '321' AND SalesInvoiceBranchID = '2'";
                        Statement stmt = conn.createStatement();
                        ResultSet rs = stmt.executeQuery(query);
    
    
    
                        if (rs != null) // if resultset not null,I add items to itemArraylist using class created
                        {
                            while (rs.next()) {
    
                                try {
                                        ClassListItems classListItems = new ClassListItems(rs.getString("SalesInvoiceSerial"),rs.getString("SalesInvoiceDate"),rs.getString("SalesInvoiceItemCount"),rs.getString("salesInvoicetotal"),rs.getString("SalesInvoiceTaxs"),rs.getString("SalesInvoiceLastTotal"));
                                        String query2 = "SELECT SalesProductName FROM SalesInvoiceDetail WHERE SalesInvoiceID = '"+rs.getString("SalesInvoiceID")+"'";
                                        Statement stmt2 = conn.createStatement();
                                        ResultSet rs2 = stmt2.executeQuery(query2);
    
                                        if (rs2 != null){
                                            while (rs2.next()){
                                                System.out.println("ssss");
                                                classListItems.getChildItemList().add(new ChildItem(rs2.getString("SalesProductName")));
                                                itemArrayList.add(classListItems);
                                            }
                                            msg = "Found";
                                            success = true;
                                        }else {
                                            msg = "Not Found";
                                            success = false;
                                        }
    
    
                                    //Picasso.with(agzakhana_mainAr.this).load(rs.getString("SpecialityIcon")).into(specialityicon);
    
                                } catch (Exception ex) {
                                    ex.printstacktrace();
                                }
                            }
    
    
                        }
    
    
    
    
    
    
    
                    }
                } catch (Exception e) {
                    e.printstacktrace();
                    Writer writer = new StringWriter();
                    e.printstacktrace(new PrintWriter(writer));
                    msg = writer.toString();
                    Log.d("Error",writer.toString());
                    success = false;
                }
    
    
                return msg;
            }
    
    
            @Override
            protected void onPostExecute(String msg) // disimissing progress dialoge,showing error and setting up my listview
            {
                //progress2.hideProgress();
                progressDialog.hide();
    
                if (msg!=null){
                    Toast.makeText(MainActivity.this,msg + "",Toast.LENGTH_LONG).show();
                }
    
                if (!success) {
                    System.out.println("EndNotSuccess");
                } else {
                    try {
                        myAppAdapter = new  MyAppAdapter(itemArrayList,MainActivity.this);
                        exlistView21.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
                        exlistView21.setAdapter(myAppAdapter);
                        System.out.println("End");
                    } catch (Exception ex) {
    
                    }
    
                }
            }
        }


适配器:

    public class MyAppAdapter extends Baseexpandablelistadapter//has a class viewholder which holds
        {
    
            public class ViewHolder {
    
                TextView invoicenum;
                TextView date;
                TextView itemscount;
                TextView total;
                TextView tax;
                TextView lasttotal;
                TextView textchild;
    
            }
    
            public List<ClassListItems> parkingList;
    
            public Context context;
            ArrayList<ClassListItems> arraylist;
    
    
            private MyAppAdapter(List<ClassListItems> apps,Context context) {
                this.parkingList = apps;
                this.context = context;
                arraylist = new ArrayList<ClassListItems>();
                arraylist.addAll(parkingList);
                System.out.println("called");
            }
            @Override
            public int getGroupCount() {
                return parkingList.size();
            }
    
            @Override
            public int getChildrenCount(int groupPosition) {
                return parkingList.get(groupPosition).getChildItemList().size();
            }
    
            @Override
            public Object getGroup(int groupPosition) {
                return null;
            }
    
            @Override
            public Object getChild(int groupPosition,int childPosition) {
                return parkingList.get(groupPosition).getChildItemList().get(childPosition);
            }
    
            @Override
            public long getGroupId(int groupPosition) {
                return 0;
            }
    
            @Override
            public long getChildId(int groupPosition,int childPosition) {
                return childPosition;
            }
    
            @Override
            public boolean hasstableIds() {
                return true;
            }
    
            @Override
            public View getGroupView(int groupPosition,boolean isExpanded,View convertView,ViewGroup parent) {
                View rowView = convertView;
                MyAppAdapter.ViewHolder viewHolder = null;
                if (rowView == null) {
                    LayoutInflater inflater = getLayoutInflater();
                    rowView = inflater.inflate(R.layout.list_items,parent,false);
                    viewHolder = new MyAppAdapter.ViewHolder();
                    //initialize our labels
                    viewHolder.invoicenum = (TextView) rowView.findViewById(R.id.invoicenum);
                    viewHolder.date = (TextView) rowView.findViewById(R.id.date);
                    viewHolder.itemscount = (TextView) rowView.findViewById(R.id.itemcount);
                    viewHolder.total = (TextView) rowView.findViewById(R.id.total);
                    viewHolder.tax = (TextView) rowView.findViewById(R.id.tax);
                    viewHolder.lasttotal = (TextView) rowView.findViewById(R.id.lasttotal);
    
                    rowView.setTag(viewHolder);
                } else {
                    viewHolder = (MyAppAdapter.ViewHolder) convertView.getTag();
                }
                // here setting up names and images
                viewHolder.invoicenum.setText(parkingList.get(groupPosition).getSalesInvoiceSerial());
                viewHolder.itemscount.setText(parkingList.get(groupPosition).getSalesInvoiceItemCount());
                viewHolder.date.setText(parkingList.get(groupPosition).getSalesInvoiceDate());
                viewHolder.total.setText(parkingList.get(groupPosition).getSalesInvoicetotal());
                viewHolder.lasttotal.setText(parkingList.get(groupPosition).getSalesInvoiceLastTotal());
                viewHolder.tax.setText(parkingList.get(groupPosition).getSalesInvoiceTax());
                System.out.println("PARENT IS:  "+parkingList.get(groupPosition).getSalesInvoiceSerial());
    
    
                // Picasso.with(context).load(parkingList.get(position).getdiscountimage()).into(viewHolder.imagediscount);
    
    
    
    
    
    
                exlistView21.setonItemClickListener(new AdapterView.OnItemClickListener() {
                    @Override
                    public void onItemClick(AdapterView<?> parent,View view,int position,long id) {
                        //What happens when you click on a place!
    //                    Intent intent = new Intent(LoggedIn.this,MapsActivity.class);
    //                    startActivity(intent);
    
    
    
                    }
                });
                return rowView;
            }
    
            @Override
            public View getChildView(int groupPosition,int childPosition,boolean isLastChild,ViewGroup parent) {
                View resultView = convertView;
                ViewHolder holder;
                LayoutInflater inflater = getLayoutInflater();
    
                if (resultView == null) {
    
                    resultView = inflater.inflate(R.layout.listchildren,null); //Todo change layout id
                    holder = new ViewHolder();
                    holder.textchild = (TextView) resultView.findViewById(R.id.child); //Todo change view id
                    resultView.setTag(holder);
                } else {
                    holder = (ViewHolder) resultView.getTag();
                }
    
                System.out.println("CHILD IS:  "+parkingList.get(childPosition).getChildItemList().get(childPosition).getSs());
    
                holder.textchild.setText(parkingList.get(childPosition).getChildItemList().get(childPosition).getSs());
    
                return resultView;
            }
    
            @Override
            public boolean isChildSelectable(int groupPosition,int childPosition) {
                return true;
            }
    
    
    
    
    //        public void filter(String charText) {
    //            charText = charText.toLowerCase(Locale.getDefault());
    //            itemArrayList.clear();
    //            if (charText.length() == 0) {
    //                itemArrayList.addAll(arraylist);
    //
    //            } else {
    //                for (ClassListItems2 st : arraylist) {
    //                    if (st.getSpecialityname().toLowerCase(Locale.getDefault()).contains(charText)) {
    //                        itemArrayList.add(st);
    //                    }
    //
    //                }
    //            }
    //            notifyDataSetChanged();
    //        }
    
        }
    
    
    
    }

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...