Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/186.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java “如何通过选定的家长”;“子元素”;从一个自定义适配器到另一个新的自定义适配器?_Java_Android_Android Layout_Android Listview - Fatal编程技术网

Java “如何通过选定的家长”;“子元素”;从一个自定义适配器到另一个新的自定义适配器?

Java “如何通过选定的家长”;“子元素”;从一个自定义适配器到另一个新的自定义适配器?,java,android,android-layout,android-listview,Java,Android,Android Layout,Android Listview,在可扩展的自定义适配器中,我有一个带有复选框和子元素的自定义适配器,当选中/选中“我的案例订单”的父项时,订单将传递给一个新的自定义适配器,而不带复选框。我可以传递父ie订单,但无法传递子元素ie项目,即订单的子目录。因此,我需要将所选订单的子元素传递给新的适配器视图。 我的代码: try { System.out.println("READ/PARSING JSON");

在可扩展的自定义适配器中,我有一个带有复选框和子元素的自定义适配器,当选中/选中“我的案例订单”的父项时,订单将传递给一个新的自定义适配器,而不带复选框。我可以传递父ie订单,但无法传递子元素ie项目,即订单的子目录。因此,我需要将所选订单的子元素传递给新的适配器视图。

我的代码:

      try {     
            System.out.println("READ/PARSING JSON");                            
            serverStatus = jobj.getString("SERVER_STATUS"); 
                System.out.println("serverStatusObj:  "+serverStatus);                          
                JSONArray serverResponseArray2=jobj.getJSONArray("SERVER_RESPONSE");    
                for (int m = 0; m < serverResponseArray2.length(); m++) {
                     String SERVER_RESPONSE = serverResponseArray2.getString(m);                 
                     JSONObject Open_Orders_obj = new JSONObject(SERVER_RESPONSE);
                     mMAX_ORDERS_TOBEPICKED = Open_Orders_obj.getInt("MAX_ORDERS_TOBEPICKED");  
                     JSONArray ja = Open_Orders_obj.getJSONArray("ORDER_ITEM_DETAILS");     
                     order_Item_Values.clear(); 
                     mOpenOrders = new ArrayList<OpenOrders>(ja.length());                  
                        for(int i=0; i<ja.length(); i++){
                           String ORDER_ITEM_DETAILS = ja.getString(i);                            
                           jobj1 = new JSONObject(ORDER_ITEM_DETAILS);
                           String ORDERNAME = jobj1.getString("ORDERNAME");     
                           String ORDERID = jobj1.getString("ORDERID");    
                           final OpenOrders parent = new OpenOrders();
                           parent.setOrderName(ORDERNAME+ " "+  i);
                           parent.setOrderID(ORDERID);
                           parent.setChecked((i % 2) == 0);                      
                          OpenOrders    openOrderObj= new OpenOrders(ORDERID,ORDERNAME);                                
                           JSONArray Order_Items = jobj1.getJSONArray("ITEMS"); 
                            itemList =new ArrayList<String>();                            
                            parent.setChildren(new ArrayList<Child>());
                            for(int k=0; k<Order_Items.length(); k++){
                                String ITEMS = Order_Items.getString(k);
                                System.out.println(ITEMS);
                                ItemObj = new JSONObject(ITEMS);
                                String ITEMNUMBER = ItemObj.getString("ITEMNUMBER");    
                                String ITEMNAME = ItemObj.getString("ITEMNAME");    
                                itemList.add(ITEMNAME);//This adds item  name's  to the  ArrayList named 'itemList'
                                openOrderObj.setItemID(ITEMNUMBER);
                                openOrderObj.setItemName(ITEMNAME);
                                System.out.println("item name"+ITEMNAME);                           
                            final Child child = new Child();
                            child.setName(ITEMNAME  + i + "/" + k);
                            parent.getChildren().add(child);                                  
                            }
                            mOpenOrders.add(parent);
                        }                 
                   }

        } catch (JSONException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        }  //***End code to read  json content from text file saved in device   
enter code here
因此,单击按钮时,我要做的是:

                               button.setOnClickListener(new OnClickListener() {            
                                @Override
                                public void onClick(View v) {
                                    // TODO Auto-generated method stub
                                      if(mAdapter != null) {              
                                          int isSelectedOrderNumber=0;//This   Variable will check with the parameter  passed from server
                                          mOpenOrdersSelected = new ArrayList<OpenOrders>();              
                                          StringBuffer sb = new StringBuffer();
                                          Iterator<OpenOrders> it = mOpenOrders.iterator();
                                          while(it.hasNext())
                                          {
                                              OpenOrders objOpenOrders = it.next();
                                              //Do something with objOpenOrders
                                              if (objOpenOrders.isChecked()) {
                                                  isSelectedOrderNumber++;
                                                 // mOpenOrdersSelected.add(new OpenOrders(objOpenOrders.getOrderID(),objOpenOrders.getOrderName()));
                                                  sb.append(objOpenOrders.getOrderID());
                                                  sb.append(",");
                                                  final OpenOrders parent = new OpenOrders(objOpenOrders.getOrderID(),objOpenOrders.getOrderName());
                                                  ArrayList<Child>  mOpenOrderItems=objOpenOrders.getChildren();
                                                  Iterator<Child> i = mOpenOrderItems.iterator();
                                                mOpenOrdersSelected.add(parent);
                                                }
                                              }

                                          //Below Condition Will Check the selected Items With parameter passed "mMAX_ORDERS_TOBEPICKED"
                                             if(isSelectedOrderNumber<1){
                                                ShowErrorDialog("Please Select atleast One order");
                                                return;
                                              }
                                            if(isSelectedOrderNumber>mMAX_ORDERS_TOBEPICKED){
                                                ShowErrorDialog(" Select Maximum of  "+mMAX_ORDERS_TOBEPICKED+ " Orders only to process");
                                                return;
                                              }
                                     //Below code is to Call again the adapter and Displays the Order's which are checked/selected.                                            
                                        expListView = (ExpandableListView) findViewById(R.id.expandable_order_item_list);                                       
                                        ExpandableOrderSelectedListAdapter mOrderSelectedAdapter = new ExpandableOrderSelectedListAdapter(SelectLocationActivity.this,mOpenOrdersSelected);
                                        expListView.setAdapter(mOrderSelectedAdapter);                         
                                        expListView.setOnItemClickListener(new OnItemClickListener() {
                                                @Override
                                                public void onItemClick(AdapterView<?> parent, View view,
                                                        int position, long id) {
                                                    //nothing to do , as  Null Pointer exception Occurred ,to avoid that I just used this "setOnItemClickListener"
                                                }
                                                });

                                         button.setVisibility(View.GONE);//Hide  the  Initial Button in the view

                                         fullfilment_btn.setVisibility(View.VISIBLE);//Displays the confirm Button
                                         fullfilment_btn.setOnClickListener(new OnClickListener() {             
                                            @Override
                                            public void onClick(View arg0) {
                                                // TODO Auto-generated method stub

                                              }
                                            });
                                      }
                                }
                            });
button.setOnClickListener(新的OnClickListener(){
@凌驾
公共void onClick(视图v){
//TODO自动生成的方法存根
如果(mAdapter!=null){
int isSelectedOrderNumber=0;//此变量将使用从服务器传递的参数进行检查
mopenorderselected=newarraylist();
StringBuffer sb=新的StringBuffer();
迭代器it=mOpenOrders.Iterator();
while(it.hasNext())
{
OpenOrders-objOpenOrders=it.next();
//用objOpenOrders做点什么
if(objOpenOrders.isChecked()){
isSelectedOrderNumber++;
//添加(新的OpenOrders(objOpenOrders.getOrderID(),objOpenOrders.getOrderName());
sb.append(objOpenOrders.getOrderID());
某人加上(“,”);
最终OpenOrders父项=新OpenOrders(objOpenOrders.getOrderID(),objOpenOrders.getOrderName());
ArrayList mOpenOrderItems=objOpenOrders.getChildren();
迭代器i=mopenoderiems.Iterator();
mopenorderselected.add(父级);
}
}
//以下条件将检查参数传递为“mMAX\u ORDERS\u TOBEPICKED”的所选项目
如果(已选择或订单数量最大){
对话框(“选择最大值”+mMAX_ORDERS_TOBEPICKED+“仅处理订单”);
返回;
}
//下面的代码是再次调用适配器并显示选中/选择的订单。
expListView=(ExpandableListView)findViewById(R.id.expandable\u order\u item\u list);
ExpandableOrderSelectedListAdapter mOrderSelectedAdapter=新的ExpandableOrderSelectedListAdapter(SelectLocationActivity.this,mopenOrderSelected);
expListView.setAdapter(mOrderSelectedAdapter);
expListView.setOnItemClickListener(新的OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父级、视图、,
内部位置,长id){
//由于发生空指针异常,无需采取任何措施,以避免我只是使用了此“setOnItemClickListener”
}
});
button.setVisibility(View.GONE);//在视图中隐藏初始按钮
fullfilment_btn.setVisibility(View.VISIBLE);//显示确认按钮
fullfilment_btn.setOnClickListener(新的OnClickListener(){
@凌驾
公共void onClick(视图arg0){
//TODO自动生成的方法存根
}
});
}
}
});
因此,在这部分代码中,我在迭代子元素时出错


任何帮助都将是巨大的

我通过for循环解决了这个问题,它将子项添加到新的“mOpenOrderSelected”变量中:

  if (objOpenOrders.isChecked()) {
                                              isSelectedOrderNumber++;
                                              sb.append(objOpenOrders.getOrderID());
                                              sb.append(",");
                                              final OpenOrders parent = new OpenOrders(objOpenOrders.getOrderID(),objOpenOrders.getOrderName());
                                              ArrayList<Child>  mOpenOrderItems=objOpenOrders.getChildren();                                                     
                                            parent.setChildren(new ArrayList<Child>());
                                            for(int k=0; k<mOpenOrderItems.size(); k++){                                                      
                                               final Child child = (Child) mOpenOrderItems.get(k);
                                               Log.d("ChildItemsname", "ChildItemsname:"+child.getName());
                                               parent.getChildren().add(child);  
                                              }
                                            mOpenOrdersSelected.add(parent);
                                            }
if(objOpenOrders.isChecked()){
isSelectedOrderNumber++;
sb.append(objOpenOrders.getOrderID());
某人加上(“,”);
最终OpenOrders父项=新OpenOrders(objOpenOrders.getOrderID(),objOpenOrders.getOrderName());
ArrayList mOpenOrderItems=objOpenOrders.getChildren();
家长
                               button.setOnClickListener(new OnClickListener() {            
                                @Override
                                public void onClick(View v) {
                                    // TODO Auto-generated method stub
                                      if(mAdapter != null) {              
                                          int isSelectedOrderNumber=0;//This   Variable will check with the parameter  passed from server
                                          mOpenOrdersSelected = new ArrayList<OpenOrders>();              
                                          StringBuffer sb = new StringBuffer();
                                          Iterator<OpenOrders> it = mOpenOrders.iterator();
                                          while(it.hasNext())
                                          {
                                              OpenOrders objOpenOrders = it.next();
                                              //Do something with objOpenOrders
                                              if (objOpenOrders.isChecked()) {
                                                  isSelectedOrderNumber++;
                                                 // mOpenOrdersSelected.add(new OpenOrders(objOpenOrders.getOrderID(),objOpenOrders.getOrderName()));
                                                  sb.append(objOpenOrders.getOrderID());
                                                  sb.append(",");
                                                  final OpenOrders parent = new OpenOrders(objOpenOrders.getOrderID(),objOpenOrders.getOrderName());
                                                  ArrayList<Child>  mOpenOrderItems=objOpenOrders.getChildren();
                                                  Iterator<Child> i = mOpenOrderItems.iterator();
                                                mOpenOrdersSelected.add(parent);
                                                }
                                              }

                                          //Below Condition Will Check the selected Items With parameter passed "mMAX_ORDERS_TOBEPICKED"
                                             if(isSelectedOrderNumber<1){
                                                ShowErrorDialog("Please Select atleast One order");
                                                return;
                                              }
                                            if(isSelectedOrderNumber>mMAX_ORDERS_TOBEPICKED){
                                                ShowErrorDialog(" Select Maximum of  "+mMAX_ORDERS_TOBEPICKED+ " Orders only to process");
                                                return;
                                              }
                                     //Below code is to Call again the adapter and Displays the Order's which are checked/selected.                                            
                                        expListView = (ExpandableListView) findViewById(R.id.expandable_order_item_list);                                       
                                        ExpandableOrderSelectedListAdapter mOrderSelectedAdapter = new ExpandableOrderSelectedListAdapter(SelectLocationActivity.this,mOpenOrdersSelected);
                                        expListView.setAdapter(mOrderSelectedAdapter);                         
                                        expListView.setOnItemClickListener(new OnItemClickListener() {
                                                @Override
                                                public void onItemClick(AdapterView<?> parent, View view,
                                                        int position, long id) {
                                                    //nothing to do , as  Null Pointer exception Occurred ,to avoid that I just used this "setOnItemClickListener"
                                                }
                                                });

                                         button.setVisibility(View.GONE);//Hide  the  Initial Button in the view

                                         fullfilment_btn.setVisibility(View.VISIBLE);//Displays the confirm Button
                                         fullfilment_btn.setOnClickListener(new OnClickListener() {             
                                            @Override
                                            public void onClick(View arg0) {
                                                // TODO Auto-generated method stub

                                              }
                                            });
                                      }
                                }
                            });
  if (objOpenOrders.isChecked()) {
                                              isSelectedOrderNumber++;
                                              sb.append(objOpenOrders.getOrderID());
                                              sb.append(",");
                                              final OpenOrders parent = new OpenOrders(objOpenOrders.getOrderID(),objOpenOrders.getOrderName());
                                              ArrayList<Child>  mOpenOrderItems=objOpenOrders.getChildren();                                                     
                                            parent.setChildren(new ArrayList<Child>());
                                            for(int k=0; k<mOpenOrderItems.size(); k++){                                                      
                                               final Child child = (Child) mOpenOrderItems.get(k);
                                               Log.d("ChildItemsname", "ChildItemsname:"+child.getName());
                                               parent.getChildren().add(child);  
                                              }
                                            mOpenOrdersSelected.add(parent);
                                            }
         button.setOnClickListener(new OnClickListener() {          
                                @Override
                                public void onClick(View v) {
                                    // TODO Auto-generated method stub
                                      if(mAdapter != null) {              
                                          int isSelectedOrderNumber=0;//This   Variable will check with the parameter  passed from server
                                          mOpenOrdersSelected = new ArrayList<OpenOrders>();              
                                          StringBuffer sb = new StringBuffer();
                                          Iterator<OpenOrders> it = mOpenOrders.iterator();
                                          while(it.hasNext())
                                          {
                                              OpenOrders objOpenOrders = it.next();
                                              //Do something with objOpenOrders
                                              if (objOpenOrders.isChecked()) {
                                                  isSelectedOrderNumber++;
                                                  sb.append(objOpenOrders.getOrderID());
                                                  sb.append(",");
                                                  final OpenOrders parent = new OpenOrders(objOpenOrders.getOrderID(),objOpenOrders.getOrderName());
                                                  ArrayList<Child>  mOpenOrderItems=objOpenOrders.getChildren();                                                     
                                                parent.setChildren(new ArrayList<Child>());
                                                for(int k=0; k<mOpenOrderItems.size(); k++){                                                      
                                                   final Child child = (Child) mOpenOrderItems.get(k);
                                                   Log.d("ChildItemsname", "ChildItemsname:"+child.getName());
                                                   parent.getChildren().add(child);  
                                                  }
                                                mOpenOrdersSelected.add(parent);
                                                }
                                              }

                                          //Below Condition Will Check the selected Items With parameter passed "mMAX_ORDERS_TOBEPICKED"
                                             if(isSelectedOrderNumber<1){
                                                ShowErrorDialog("Please Select atleast One order");
                                                return;
                                              }
                                            if(isSelectedOrderNumber>mMAX_ORDERS_TOBEPICKED){
                                                ShowErrorDialog(" Select Maximum of  "+mMAX_ORDERS_TOBEPICKED+ " Orders only to process");
                                                return;
                                              }
                                     //Below code is to Call again the adapter and Displays the Order's which are checked/selected.                                            
                                        expListView = (ExpandableListView) findViewById(R.id.expandable_order_item_list);                                       
                                        ExpandableOrderSelectedListAdapter mOrderSelectedAdapter = new ExpandableOrderSelectedListAdapter(SelectLocationActivity.this,mOpenOrdersSelected);
                                        expListView.setAdapter(mOrderSelectedAdapter);                         
                                        expListView.setOnItemClickListener(new OnItemClickListener() {
                                                @Override
                                                public void onItemClick(AdapterView<?> parent, View view,
                                                        int position, long id) {
                                                    //nothing to do , as  Null Pointer exception Occurred ,to avoid that I just used this "setOnItemClickListener"
                                                }
                                                });

                                         button.setVisibility(View.GONE);//Hide  the  Initial Button in the view
                                         fullfilment_btn.setVisibility(View.VISIBLE);//Displays the confirm Button
                                         fullfilment_btn.setOnClickListener(new OnClickListener() {             
                                            @Override
                                            public void onClick(View arg0) {
                                                // TODO Auto-generated method stub

                                              }
                                            });
                                      }
                                }
                            });