我无法将一个arraylist添加到另一个arraylist中

时间:2016-01-19 11:20:36

标签: java android

实际上我有一个过滤后的数组。我想将ArrayList存储在另一个ArrayList中,但它不会添加。我将一个模型保存到另一个模型。因为我只想要filteredlist

public class ProductAdapter extends RecyclerView.Adapter<ProductAdapter.ComboViewHolder> {

    private ArrayList<Products> catList;
    private ArrayList<FilteredCategorymodel> filterList;


    Context context;
    int count = 0;
    //    ArrayList<FilteredCategorymodel> filterModel;
    SharedPrefrences sharedPrefrences;

    boolean isClicked = true;

    public ProductAdapter(Context context, ArrayList<Products> catList) {
        this.catList = catList;
        this.context = context;
    }

    @Override
    public ComboViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View itemView = LayoutInflater.from(parent.getContext()).
                inflate(R.layout.combo_list_item, parent, false);
        return new ComboViewHolder(itemView);
    }


    @Override
    public void onBindViewHolder(final ComboViewHolder holder, final int position) {

        final Products products = catList.get(position);
        Log.e("Products Items::::", products + "");
        holder.mProductName.setText(products.getProduct_name());
        holder.mProductDescription.setText(products.getProduct_description());
        holder.mDescription.setText(products.getRecipe_method());
        holder.mPrice.setText(products.getPrice());


        Picasso.with(context)
                .load(Constants.Image_Path + products.getProduct_image())
                .placeholder(R.drawable.common_signin_btn_icon_focus_light) // optional
                .error(R.drawable.common_signin_btn_icon_dark)         // optional
                .into(holder.mPImage);

        holder.mPImage.setTag(holder);

        holder.btnIncrese.setTag(position);
        holder.btnDecrese.setTag(position);


        holder.btnIncrese.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                int mPosition = (int) v.getTag();
                Log.e("mPosition~", mPosition + "~" + position);
                count = catList.get(mPosition).getCount() + 1;


                for (int i = 0; i < catList.size(); i++) {

                    filterList = new ArrayList<FilteredCategorymodel>();
                    filterList.add(catList.get(i));
                }

                basketCount = basketCount + 1;
                catList.get(mPosition).setCount(count);
                holder.mQuantity.setText(Integer.toString(products.getCount()));
                ProductActivity.updateSum(basketCount);
            }
        });

        holder.btnDecrese.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
//                int position = (Integer) v.getTag();
                int mPosition = (int) v.getTag();
                if (catList.get(mPosition).getCount() < 1) {
                    holder.mQuantity.setText("0");

                } else {
                    count = catList.get(mPosition).getCount() - 1;
                    basketCount = basketCount - 1;
                    catList.get(position).setCount(count);

                    Log.e("COUNT::::", count + "");
                    holder.mQuantity.setText(Integer.toString(products.getCount()));

                    ProductActivity.updateSum(basketCount);
//                    sharedPrefrences = new SharedPrefrences();
//                    sharedPrefrences.addFavorite(context, catList.get(mPosition));
//                    Toast.makeText(context, "Fave",
//                            Toast.LENGTH_SHORT).show();
//                    Log.e("COUNT::::", count + "");
                }

            }
        });

    }

    @Override
    public int getItemCount() {
        return catList.size();
    }

3 个答案:

答案 0 :(得分:1)

因为每次在循环中创建新的arraylist。 这样做。

$("#submit").on('click', function(){
        var flag;
        $('.questions')
            .each(function(){
                flag = false;
                if(!$('.question10 input[type="checkbox"]' .is(':checked'))
                return false;
                flag = true;
        });
        if (flag)
            alert("submitted");
        else
            alert("Not submitted");
    });

答案 1 :(得分:1)

从这个太少的信息来看,我猜你试图为你的filterList添加一些值。问题是,每次你经历循环时,你正在创建一个新的ArrayList

 for (int i = 0; i < catList.size(); i++) {

                filterList = new ArrayList<FilteredCategorymodel>();
                filterList.add(catList.get(i));
            }

你必须首先初始化filterList,不要在循环中执行此操作。你的循环必须如下所示:

   for (int i = 0; i < catList.size(); i++) {

               filterList.add(catList.get(i));
            }

您尝试达到的目标也很重要。如果您只想在单击按钮时填写新列表,则在循环外的onButtonClick内初始化您的列表。但是,如果您想要一次又一次地填充该列表并且值应该保持不变,那么在您的构造函数中初始化列表。

但是,在您的情况下,这不起作用,因为filterList来自类型“FilteredCategoryModel”,而catList来自类型“产品”。您无法使用错误的类型填充ArrayList。

答案 2 :(得分:0)

如果您想将一个ArrayList数据添加到另一个{0}},则不需要使用循环,请使用addAll() ArrayList。请查看以下示例。

&#13;
&#13;
ArrayList<YourClass> a = new ArrayList<>();
ArrayList<YourClass> b = new ArrayList<>();
b.addAll(a);
&#13;
&#13;
&#13; 它会将b的所有数据添加到a