2017-10-16 70 views
0

嗨,我正在android应用程序。我在我的应用程序中使用json解析。首先这是我的JSON响应如何访问arraylist在适配器

{ 
    "Data": { 
    "headerText": "Revolution", 
    "productStartingPrice": "$38.78", 

    "sizeList": [ 
     { 
     "textUpper": "Revolution for (Pink)", 
     "textLower": "$38.78", 
     "packList": [ 
      { 
      "textUpper": "3 DOSES", 
      "textLower": "$38.78", 

      } 
      { 
      "textUpper": "6 DOSES", 
      "textLower": "$71.60", 

      } 
     ] 
     }, 
     { 
     "textUpper": "Revolution for (Blue)", 
     "textLower": "$46.92", 
     "packList": [ 
      { 
      "textUpper": "3 DOSES", 
      "textLower": "$46.92", 
      } 
      { 
      "textUpper": "6 DOSES", 
      "textLower": "$79.56", 


      } 
      { 
      "textUpper": "12 DOSES", 
      "textLower": "$137.27", 

      } 
     ] 
     } 
    ] 

    }, 
    "Status": 1, 
    "Message": "", 
    "UserMessage": "" 
} 

现在我使用自定义警告对话框加载SizeList的阵列和另一个dailog为packlist阵列。现在我想要的是,当用户从sizelist中选择(粉红色),然后在第二个dailog中,我想要显示来自packlist的3个剂量和6个剂量,并且当用户选择(蓝色)时,我想显示3个剂量,6个剂量,12个剂量。现在我只有最后两项(蓝色)6剂,12剂。任何人都可以帮我解决这个问题吗?

private void showDialog(){ 

     dialogf = new Dialog(getActivity()); 

     View view = getActivity().getLayoutInflater().inflate(R.layout.dialog_main, null); 

     ListView lv = (ListView) view.findViewById(R.id.custom_list); 
     Button close_btn = (Button) view.findViewById(R.id.close_btn_sizelist); 
     sizeadapter = new CustomListAdapterSize(getActivity(), sizelists); 
     lv.setAdapter(sizeadapter); 
     lv.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
      @Override 
      public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 

      } 
     }); 

     dialogf.setContentView(view); 

     dialogf.show(); 
     close_btn.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       dialogf.dismiss(); 
      } 
     }); 


    } 

    private void showDialogpacks(){ 

     dialogfpacks = new Dialog(getActivity()); 

     View view = getActivity().getLayoutInflater().inflate(R.layout.dialog_main_packs, null); 
     ListView lv = (ListView) view.findViewById(R.id.custom_list_packs); 
     Button close_btn = (Button) view.findViewById(R.id.close_btn_packlist); 

     adapterpacks = new CustomListAdaptertwo(getActivity(), sizelists); 
     lv.setAdapter(adapterpacks); 

     lv.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
      @Override 
      public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 

      } 
     }); 

     dialogfpacks.setContentView(view); 
     dialogfpacks.show(); 



    } 
public class CustomListAdapterSize extends BaseAdapter { 
     private Context context; 
     private LayoutInflater inflater; 
     private List<ProductLandingSizeListModel> adaptersizelist; 
     private CheckBox selected =null; 
     private RadioButton mSelectedRB; 
     public CustomListAdapterSize(Context context,List<ProductLandingSizeListModel> movieItems) { 
      this.context = context; 
      this.adaptersizelist=movieItems; 
     } 

     @Override 
     public int getCount() { 
      return adaptersizelist.size(); 
     } 

     @Override 
     public Object getItem(int position) { 
      return adaptersizelist.get(position); 
     } 

     @Override 
     public long getItemId(int position) { 
      return position; 
     } 

     @Override 
     public View getView(final int position, View convertView, ViewGroup parent) { 
      final ViewHolder holder; 
      if (convertView == null) { 
       holder = new ViewHolder(); 
       convertView = LayoutInflater.from(context).inflate(R.layout.listitem_productsizes, null); 
       holder.txtproname = (TextView) convertView.findViewById(R.id.txtproductsizenames); 
       holder.txtproprice = (TextView) convertView.findViewById(R.id.txtproductsizeprice); 
       holder.radioBtn = (CheckBox)convertView.findViewById(R.id.productsize_radio); 
       convertView.setTag(holder); 
      }else{ 
       holder = (ViewHolder) convertView.getTag(); 
      } 
      final ProductLandingSizeListModel m = adaptersizelist.get(position); 
      holder.txtproname.setText(m.getSizeList_textUpper()); 
      holder.txtproprice.setText(m.getSizeList_textLower()); 

      if (position == mSelectedPosition) { 
       if (selected == null) { 
        holder.radioBtn.setChecked(true); 
        selected = holder.radioBtn; 
       } 
      } 
      if (position == mSelectedPosition) 
       holder.radioBtn.setChecked(true); 
      else 
       holder.radioBtn.setChecked(false); 

      holder.radioBtn.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View view) { 

        if (selected != null) { 
         selected.setChecked(false); 
        } 
        mSelectedPosition =position; 
        if(mSelectedPositionpack!=0) 
        { 
         mSelectedPositionpack=0; 
        } 
        holder.radioBtn.setChecked(true); 
        selected = holder.radioBtn; 

        notifyDataSetChanged(); 

        dialogf.dismiss(); 
        showDialogpacks(); 
       } 
      }); 

      return convertView; 
     } 
     class ViewHolder{ 

      TextView txtproname,txtproprice; 
      public CheckBox radioBtn; 
     } 

    } 

    public class CustomListAdaptertwo extends BaseAdapter { 


     private CheckBox selected =null; 
     private Context context; 
     private LayoutInflater inflater; 
     private List<ProductLandingSizeListModel> adaptersizelist; 


     public CustomListAdaptertwo(Context context,List<ProductLandingSizeListModel> adaptersizelist) { 
      this.context = context; 
      this.adaptersizelist=adaptersizelist; 
      inflater = LayoutInflater.from(context); 
     } 

     @Override 
     public int getCount() { 
      if (adaptersizelist != null) { 
       return adaptersizelist.size(); 
      } 
      return 0; 
     } 

     @Override 
     public Object getItem(int position) { 
      return adaptersizelist.get(position); 
     } 

     @Override 
     public long getItemId(int position) { 
      return position; 
     } 

     @Override 
     public View getView(final int position, View convertView, ViewGroup parent) { 
      final ViewHolder holder; 
      if (convertView == null) { 
       holder = new ViewHolder(); 
       convertView = inflater.inflate(R.layout.custom_spinnertwo, null); 
       holder.txtproname = (TextView) convertView.findViewById(R.id.text_main_seentwo); 
       holder.txtproprice = (TextView) convertView.findViewById(R.id.sub_text_seentwo); 
       holder.checkpack = (CheckBox)convertView.findViewById(R.id.productpack_radio); 
       convertView.setTag(holder); 
      }else{ 
       holder = (ViewHolder) convertView.getTag(); 
      } 

      final ProductLandingSizeListModel m = adaptersizelist.get(position); 

      for(int i=0;i<adaptersizelist.get(position).getPacklistmodel().size();i++) 
      { 
       System.out.println("PACK na data"+adaptersizelist.get(position).getPacklistmodel().get(i).getPackList_textUpper()); 

       holder.txtproname.setText(adaptersizelist.get(position).getPacklistmodel().get(i).getPackList_textUpper()); 
       holder.txtproprice.setText(adaptersizelist.get(position).getPacklistmodel().get(i).getPackList_textLower()); 

      } 


      if (position == mSelectedPositionpack) { 
       if (selected == null) { 
        holder.checkpack.setChecked(true); 
        selected = holder.checkpack; 
       } 
      } 
      if (position == mSelectedPositionpack) 
       holder.checkpack.setChecked(true); 
      else 
       holder.checkpack.setChecked(false); 

      holder.checkpack.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View view) { 

        if (selected != null) { 
         selected.setChecked(false); 
        } 
        mSelectedPositionpack =position; 
        holder.checkpack.setChecked(true); 
        selected = holder.checkpack; 
        // selected_pack_text.setText(movieItems.get(position)+" - "+"$"+packItems.get(position)); 
        notifyDataSetChanged(); 



        dialogfpacks.dismiss(); 
       } 
      }); 
      return convertView; 
     } 
     class ViewHolder{ 

      TextView txtproname,txtproprice; 
      CheckBox checkpack; 
     } 

    } 
+0

你需要有packlist类型的数组列表中你SizeList的模式类的内部 –

+0

是的,我已经 – chris

+0

@VivekMishra你能帮 – chris

回答

1

更改您的showDialogpacks像第一个对话框的this.On点击传球被点击的位置,然后在里面通过只有项目 里面sizelists特定的位置。

private void showDialogpacks(int position){ 

    dialogfpacks = new Dialog(getActivity()); 

    View view = getActivity().getLayoutInflater().inflate(R.layout.dialog_main_packs, null); 
    ListView lv = (ListView) view.findViewById(R.id.custom_list_packs); 
    Button close_btn = (Button) view.findViewById(R.id.close_btn_packlist); 

    adapterpacks = new CustomListAdaptertwo(getActivity(), sizelists.get(position).getPacklistmodel()); 
    lv.setAdapter(adapterpacks); 

    lv.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 

     } 
    }); 

    dialogfpacks.setContentView(view); 
    dialogfpacks.show(); 



} 

还将第二个适配器列表类型更改为ProductLandingPackListModel

public CustomListAdaptertwo(Context context,List<ProductLandingPackListModel> adaptersizelist) { 
     this.context = context; 
     this.adaptersizelist=adaptersizelist; 
     inflater = LayoutInflater.from(context); 
    } 

而在CustomAdapdtertwo getView方法

final ProductLandingPackListModel model = adaptersizelist.get(position); 

    holder.txtproname.setText(model.getPackList_textUpper()); 
    holder.txtproprice.setText(model.getPackList_textLower()); 
+0

它给出的错误(getActivity(),sizelists.get(position));这里。在第二个适配器,我需要改变? – chris

+0

兄弟问题是在这里第二个适配器得到count.You需要传递单个内部数组项目。通过sizelists.get(position).packList。 – Anonymous

+0

我duno你的方法名..你需要像那样传递,也改变arrayList里面的第二个适配器。它应该是List adaptersizelist – Anonymous

0

嗨克里斯基于尺寸的选择集packlist ......各种规模用户的更新包列表中选择

+0

好的告诉我该怎么做?请检查代码。 – chris

+0

你的第二个适配器应该是ArrayList类型,并且在点击下面SizeList的showDialogPacks(ArrayList的 packList)设置一样,将其设置为recyclerview – Shanmugam

+0

我想,太,,但其NT给予适当输出 – chris

相关问题