如何在适配器中访问arraylist的arraylist [英] How to access arraylist of arraylist in adapters

查看:90
本文介绍了如何在适配器中访问arraylist的arraylist的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在制作android应用程序.我在应用程序中使用json解析.首先,这是我的json响应

Hi i am making android application. I am using json parsing in my application. first of all this is my json response

{
  "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": ""
}

现在,我正在使用自定义警报对话框来加载size​​list数组和另一个Dailist Packlist数组.现在我想要的是当用户从尺寸列表中选择(粉红色)时,然后在第二个目录中,我想从包装列表中显示3剂和6剂;当用户选择(蓝色)时,我想要显示3剂,6剂,12剂.现在我只得到(Blue)6剂,12剂的最后两项.谁能帮我解决这个问题?

Now I am using custom alert dialog to load sizelist array and another dailog for packlist array. Now what i want is when user select (Pink) from sizelist then in second dailog i want to display 3 doses and 6 doses from packlist and when user select (Blue) i want to display 3 doses, 6 doses ,12 doses. Right now i am getting only last two items of (Blue) 6 doses ,12 doses. can any one help me to solve this?

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

    }

推荐答案

像这样更改showDialogpacks.在单击第一个对话框时,传递被单击的位置,然后在其中仅传递项目 特定位置的内部尺码表.

Change your showDialogpacks like this.On click of the first dialog pass the position that is been clicked and then inside that pass only the item inside sizelists for particular position.

  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.

Also change the second adapter list type to ProductLandingPackListModel.

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

在CustomAdapdtertwo getView方法的内部

And in the inside of the CustomAdapdtertwo getView method

    final ProductLandingPackListModel model = adaptersizelist.get(position);

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

这篇关于如何在适配器中访问arraylist的arraylist的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆