在RecyclerView中使用条件IF

在RecyclerView中使用条件IF

本文介绍了在RecyclerView中使用条件IF的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

限时删除!!

我的应用程序是在线市场.我可以将产品添加到购物车.我正在尝试将图标从添加到购物车"更改为购物车中".但是它不能正常工作.如果我仅添加一个产品并向下滚动,则所有其他产品的图标也会更改.在RecyclerView适配器OnBindViewHolder中,我使用条件 if .

My app it's online market. I can add product to cart. I am trying change icon from "add to cart" to "in cart". But it doesn't work correctly. If I add only one product and scroll down, all other products icon also changed. In RecyclerView adapter OnBindViewHolder I use condition if.

if (getTableBasket().contains(p.getId()))
    prudactViewHolder.btn_buy.setBackgroundResource(R.drawable.tool);
else
    prudactViewHolder.btn_buy.setBackgroundResource(R.drawable.tool1);

....

ArrayList<Integer> getTableBasket(){

        ArrayList<Integer> id_list = new ArrayList<>();
        dbHelper = new DBHelper(mContext);
        SQLiteDatabase db = dbHelper.getWritableDatabase();
        Cursor c = db.query("basket", null, null, null, null, null, null);
        if (c.moveToFirst()) {
            int id_prudactColIndex = c.getColumnIndex("id_prudact");
            do {
                id_list.add(c.getInt(id_prudactColIndex));

            } while (c.moveToNext());
        } else
            Log.d(LOG_TAG, "In basket 0 rows");
        c.close();

        return id_list;
    }

编辑好的,我以JSON格式从服务器获取数据.并将其显示在recyclerview中.我可以在购物车中添加prudact,为此,我创建了"Busket"表.当用户将产品添加到购物车时,实际数据会添加到购物篮"中.例如,用户关闭应用程序.然后再次回到应用程序,他可以在其他图标中找到自己添加的产品,而在其他图标中没有添加产品.

EDITOk, I am get data from server in JSON format. And display it in recyclerview. I can add prudact to cart, for this I create table "Busket". When user add product to cart, prudact data added to "Busket". And for example user close the app. And again come back to app, he can find that his added product in other icon and didn't added product in another icon.

我的数据库结构

db.execSQL("create table basket ("
                + "id integer primary key autoincrement,"
                + "id_prudact integer,"
                + "name text,"
                + "id_image integer,"
                + "count integer,"
                + "price integer,"
                + "priceOld integer,"
                + "nomer_zakaz text" + ");");

        db.execSQL("create table favorite ("
                + "id integer primary key autoincrement,"
                + "id_prudact integer,"
                + "name text,"
                + "id_image text,"
                + "count integer,"
                + "price integer,"
                + "priceOld integer" + ");");

我的完整适配器.

public class PrudactAdapter extends RecyclerView.Adapter<PrudactAdapter.PrudactViewHolder> {

    List<PrudactModel> prudactsList;
    public Context mContext;
    public static EditPlayerAdapterCallback callback;
    ArrayList<PrudactBusketModel> busketList = new ArrayList<>();
    DBHelper dbHelper;
    ImageLoader imageLoader = AppController.getInstance().getImageLoader();
    public ArrayList<Integer> tableBasket = new ArrayList<Integer>();
    public ArrayList<Integer> tableFavorite = new ArrayList<>();
    String LOG_TAG = "myLogs";

    public PrudactAdapter(List<PrudactModel> persons, Context context){
        this.prudactsList = persons;
        this.mContext = context;


    }

    @Override
    public PrudactViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_of_pruduct, parent, false);
        PrudactViewHolder pvh = new PrudactViewHolder(v,mContext);

        return pvh;
    }


    @Override
    public int getItemViewType(int position) {
        return super.getItemViewType(position);


    }

    @Override
    public void  onBindViewHolder(final PrudactViewHolder prudactViewHolder, final int i) {

        if (imageLoader == null)
            imageLoader = AppController.getInstance().getImageLoader();

        final PrudactModel p  = prudactsList.get(i);
        prudactViewHolder.catalogName.setText(p.getName());
        prudactViewHolder.catalogPrice.setText(Integer.toString(p.getPrice())+" тг");
        prudactViewHolder.catalogPriceOld.setText(Integer.toString(p.getOldPrice())+" тг");
        prudactViewHolder.thumbNail.setImageUrl(p.getImgId(),imageLoader);
      //  final MediaPlayer addSound = MediaPlayer.create(mContext,R.raw.button28);
        //// TODO Cheking PRICE

        if (p.getOldPrice()==0){
            prudactViewHolder.catalogPriceOld.setVisibility(View.INVISIBLE);
            prudactViewHolder.aksia.setVisibility(View.INVISIBLE);
            prudactViewHolder.catalogPrice.setTextColor(ContextCompat.getColor(mContext, R.color.black));
        }
        else {
            prudactViewHolder.catalogPrice.setTextColor(ContextCompat.getColor(mContext, R.color.red));
            prudactViewHolder.catalogPriceOld.setVisibility(View.VISIBLE);
            prudactViewHolder.aksia.setVisibility(View.VISIBLE);
        }

        //// TODO Cheking DB

        if (getTableBasket().contains(p.getId()))
            prudactViewHolder.btn_buy.setBackgroundResource(R.drawable.tool);
        else
            prudactViewHolder.btn_buy.setBackgroundResource(R.drawable.tool1);

        if (getTableFavorite().contains(p.getId()))
            prudactViewHolder.btn_favorite.setBackgroundResource(R.drawable.favorite_d);
        else
            prudactViewHolder.btn_favorite.setBackgroundResource(R.drawable.favorite_c);

        //// TODO: 02.05.2016  BUY BUTTON CLICK

        prudactViewHolder.ll_buy.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                dbHelper = new DBHelper(mContext);
                final ContentValues cv = new ContentValues();
                final SQLiteDatabase db = dbHelper.getWritableDatabase();
                if (prudactViewHolder.btn_buy.getBackground().getConstantState()== ContextCompat.getDrawable(mContext,R.drawable.tool1).getConstantState()){
                    updateBuyButton(prudactViewHolder, true);
                    Log.d(LOG_TAG, "--- Insert in mytable: ---");
                    cv.put("id_prudact", p.getId());
                    cv.put("name",p.getName());
                    cv.put("id_image",p.getImgId());
                    cv.put("count",1);
                    cv.put("price",p.getPrice());
                    cv.put("priceOld",p.getOldPrice());
                    long rowID = db.insert("basket", null, cv);
                    Log.d(LOG_TAG, "row to basket inserted, ID = " + rowID);
                    callback.folderClicked(1);
                }
                else {
                    updateBuyButton2(prudactViewHolder, true);
                    callback.folderClicked(-1);
                    db.delete("basket","id_prudact=?",new String[]{String.valueOf(p.getId())});
                }
                dbHelper.close();
            }
        });

        prudactViewHolder.btn_buy.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                dbHelper = new DBHelper(mContext);
                final ContentValues cv = new ContentValues();
                final SQLiteDatabase db = dbHelper.getWritableDatabase();
                if (prudactViewHolder.btn_buy.getBackground().getConstantState()== ContextCompat.getDrawable(mContext,R.drawable.tool1).getConstantState()){
                    updateBuyButton(prudactViewHolder, true);
                    Log.d(LOG_TAG, "--- Insert in mytable: ---");
                    cv.put("id_prudact", p.getId());
                    cv.put("name",p.getName());
                    cv.put("id_image",p.getImgId());
                    cv.put("count",1);
                    cv.put("price",p.getPrice());
                    cv.put("priceOld",p.getOldPrice());
                    long rowID = db.insert("basket", null, cv);
                    Log.d(LOG_TAG, "row to basket inserted, ID = " + rowID);
                    callback.folderClicked(1);
                }
                else {
                    updateBuyButton2(prudactViewHolder, true);
                    callback.folderClicked(-1);
                    db.delete("basket","id_prudact=?",new String[]{String.valueOf(p.getId())});
                }
                dbHelper.close();
            }
        });

       //// TODO: 02.05.2016  FAVORITE BUTTON CLICK

        prudactViewHolder.ll_favorite.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                dbHelper = new DBHelper(mContext);
                final ContentValues cv = new ContentValues();
                final SQLiteDatabase db = dbHelper.getWritableDatabase();
                if (prudactViewHolder.btn_favorite.getBackground().getConstantState()== ContextCompat.getDrawable(mContext,R.drawable.favorite_c).getConstantState()){
                    updateHeartButton(prudactViewHolder, true);
                    cv.put("id_prudact", p.getId());
                    cv.put("name",p.getName());
                    cv.put("id_image",p.getImgId());
                    cv.put("count",1);
                    cv.put("price",p.getPrice());
                    cv.put("priceOld",p.getOldPrice());
                    long rowID = db.insert("favorite", null, cv);
                    Log.d(LOG_TAG, "row to favorite inserted, ID = " + rowID);
                }

                else {
                    updateHeartButton2(prudactViewHolder, true);
                    db.delete("favorite","id_prudact=?",new String[]{String.valueOf(p.getId())});
               }
            }
        });

        prudactViewHolder.btn_favorite.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                dbHelper = new DBHelper(mContext);
                final ContentValues cv = new ContentValues();
                final SQLiteDatabase db = dbHelper.getWritableDatabase();
                if (prudactViewHolder.btn_favorite.getBackground().getConstantState()== ContextCompat.getDrawable(mContext,R.drawable.favorite_c).getConstantState()){
                    updateHeartButton(prudactViewHolder, true);
                    cv.put("id_prudact", p.getId());
                    cv.put("name",p.getName());
                    cv.put("id_image",p.getImgId());
                    cv.put("count",1);
                    cv.put("price",p.getPrice());
                    cv.put("priceOld",p.getOldPrice());
                    long rowID = db.insert("favorite", null, cv);
                    Log.d(LOG_TAG, "row to favorite inserted, ID = " + rowID);

                }
                else {
                    updateHeartButton2(prudactViewHolder, true);
                    db.delete("favorite","id_prudact=?",new String[]{String.valueOf(p.getId())});
               }
            }
        });

        //// TODO: 02.05.2016  SHARE BUTTON CLICK

        prudactViewHolder.ll_share.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String shareBody = "Мне нравится "+p.getName()+" за "+p.getPrice()+" тенге. unimax.kz";
                Intent sharingIntent = new Intent(android.content.Intent.ACTION_SEND);
                sharingIntent.setType("text/plain");
                sharingIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, "Subject Here");
                sharingIntent.putExtra(android.content.Intent.EXTRA_TEXT, shareBody);
                mContext.startActivity(Intent.createChooser(sharingIntent,"Elaman" ));
            }
        });
        prudactViewHolder.btn_share.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String shareBody = "Мне нравится "+p.getName()+" за "+p.getPrice()+" тенге. unimax.kz";
                Intent sharingIntent = new Intent(android.content.Intent.ACTION_SEND);
                sharingIntent.setType("text/plain");
                sharingIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, "Subject Here");
                sharingIntent.putExtra(android.content.Intent.EXTRA_TEXT, shareBody);
                mContext.startActivity(Intent.createChooser(sharingIntent,"Elaman" ));
            }
        });

        prudactViewHolder.thumbNail.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(mContext, ImageActivity.class);
                intent.putExtra("image",p.getImgId());
                mContext.startActivity(intent);
            }
        });


        dbHelper.close();

    }

    private static final AccelerateInterpolator ACCELERATE_INTERPOLATOR = new AccelerateInterpolator();
    private static final OvershootInterpolator OVERSHOOT_INTERPOLATOR = new OvershootInterpolator(4);

    private void updateHeartButton(final PrudactViewHolder holder, boolean animated) {
        if (animated) {
                AnimatorSet animatorSet = new AnimatorSet();

                ObjectAnimator rotationAnim = ObjectAnimator.ofFloat(holder.btn_favorite, "rotation", 0f, 360f);
                rotationAnim.setDuration(300);
                rotationAnim.setInterpolator(ACCELERATE_INTERPOLATOR);

                ObjectAnimator bounceAnimX = ObjectAnimator.ofFloat(holder.btn_favorite, "scaleX", 0.2f, 1f);
                bounceAnimX.setDuration(300);
                bounceAnimX.setInterpolator(OVERSHOOT_INTERPOLATOR);

                ObjectAnimator bounceAnimY = ObjectAnimator.ofFloat(holder.btn_favorite, "scaleY", 0.2f, 1f);
                bounceAnimY.setDuration(300);
                bounceAnimY.setInterpolator(OVERSHOOT_INTERPOLATOR);
                bounceAnimY.addListener(new AnimatorListenerAdapter() {
                    @Override
                    public void onAnimationStart(Animator animation) {
                        holder.btn_favorite.setBackgroundResource(R.drawable.favorite_d);
                    }
                });

                animatorSet.play(rotationAnim);
                animatorSet.play(bounceAnimX).with(bounceAnimY).after(rotationAnim);
                animatorSet.start();
        }
    }

    private void updateHeartButton2(final PrudactViewHolder holder, boolean animated) {
        if (animated) {
            AnimatorSet animatorSet = new AnimatorSet();

            ObjectAnimator rotationAnim = ObjectAnimator.ofFloat(holder.btn_favorite, "rotation", 0f, 360f);
            rotationAnim.setDuration(300);
            rotationAnim.setInterpolator(ACCELERATE_INTERPOLATOR);

            ObjectAnimator bounceAnimX = ObjectAnimator.ofFloat(holder.btn_favorite, "scaleX", 0.2f, 1f);
            bounceAnimX.setDuration(300);
            bounceAnimX.setInterpolator(OVERSHOOT_INTERPOLATOR);

            ObjectAnimator bounceAnimY = ObjectAnimator.ofFloat(holder.btn_favorite, "scaleY", 0.2f, 1f);
            bounceAnimY.setDuration(300);
            bounceAnimY.setInterpolator(OVERSHOOT_INTERPOLATOR);
            bounceAnimY.addListener(new AnimatorListenerAdapter() {
                @Override
                public void onAnimationStart(Animator animation) {
                    holder.btn_favorite.setBackgroundResource(R.drawable.favorite_c);
                }
            });

            animatorSet.play(rotationAnim);
            animatorSet.play(bounceAnimX).with(bounceAnimY).after(rotationAnim);
            animatorSet.start();
        }
    }

    private void updateBuyButton(final PrudactViewHolder holder, boolean animated) {
        if (animated) {
            AnimatorSet animatorSet = new AnimatorSet();

            ObjectAnimator rotationAnim = ObjectAnimator.ofFloat(holder.btn_buy, "rotation", 0f, 360f);
            rotationAnim.setDuration(300);
            rotationAnim.setInterpolator(ACCELERATE_INTERPOLATOR);

            ObjectAnimator bounceAnimX = ObjectAnimator.ofFloat(holder.btn_buy, "scaleX", 0.2f, 1f);
            bounceAnimX.setDuration(300);
            bounceAnimX.setInterpolator(OVERSHOOT_INTERPOLATOR);

            ObjectAnimator bounceAnimY = ObjectAnimator.ofFloat(holder.btn_buy, "scaleY", 0.2f, 1f);
            bounceAnimY.setDuration(300);
            bounceAnimY.setInterpolator(OVERSHOOT_INTERPOLATOR);
            bounceAnimY.addListener(new AnimatorListenerAdapter() {
                @Override
                public void onAnimationStart(Animator animation) {
                    holder.btn_buy.setBackgroundResource(R.drawable.tool);
                }
            });

            animatorSet.play(rotationAnim);
            animatorSet.play(bounceAnimX).with(bounceAnimY).after(rotationAnim);
            animatorSet.start();
        }
    }

    private void updateBuyButton2(final PrudactViewHolder holder, boolean animated) {
        if (animated) {
            AnimatorSet animatorSet = new AnimatorSet();

            ObjectAnimator rotationAnim = ObjectAnimator.ofFloat(holder.btn_buy, "rotation", 0f, 360f);
            rotationAnim.setDuration(300);
            rotationAnim.setInterpolator(ACCELERATE_INTERPOLATOR);

            ObjectAnimator bounceAnimX = ObjectAnimator.ofFloat(holder.btn_buy, "scaleX", 0.2f, 1f);
            bounceAnimX.setDuration(300);
            bounceAnimX.setInterpolator(OVERSHOOT_INTERPOLATOR);

            ObjectAnimator bounceAnimY = ObjectAnimator.ofFloat(holder.btn_buy, "scaleY", 0.2f, 1f);
            bounceAnimY.setDuration(300);
            bounceAnimY.setInterpolator(OVERSHOOT_INTERPOLATOR);
            bounceAnimY.addListener(new AnimatorListenerAdapter() {
                @Override
                public void onAnimationStart(Animator animation) {
                    holder.btn_buy.setBackgroundResource(R.drawable.tool1);
                }
            });

            animatorSet.play(rotationAnim);
            animatorSet.play(bounceAnimX).with(bounceAnimY).after(rotationAnim);
            animatorSet.start();
        }
    }

    @Override
    public void onAttachedToRecyclerView(RecyclerView recyclerView) {
        super.onAttachedToRecyclerView(recyclerView);
    }

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

    public void setCallback(EditPlayerAdapterCallback callback2){

        callback = callback2;
    }

    public static class PrudactViewHolder extends RecyclerView.ViewHolder{

        CardView cv;
        TextView catalogName,catalogPrice,catalogPriceOld;
        NetworkImageView thumbNail;
        ImageButton btn_favorite,btn_share, btn_buy;
        LinearLayout ll_buy,aksia,ll_share,ll_favorite;

        public PrudactViewHolder(View itemView,Context context) {
            super(itemView);
            cv = (CardView)itemView.findViewById(R.id.cv);
            catalogName = (TextView)itemView.findViewById(R.id.name_catalog);
            catalogPrice = (TextView)itemView.findViewById(R.id.price_catalog);
            catalogPriceOld = (TextView)itemView.findViewById(R.id.old_price_catalog);

            btn_buy = (ImageButton) itemView.findViewById(R.id.btn_buy);
            btn_share = (ImageButton) itemView.findViewById(R.id.btn_share);
            btn_favorite = (ImageButton) itemView.findViewById(R.id.izbrannyi);

            thumbNail = (NetworkImageView)itemView.findViewById(R.id.image_catalog);
            aksia = (LinearLayout) itemView.findViewById(R.id.aksia);
            ll_buy = (LinearLayout) itemView.findViewById(R.id.ll_buy);
            ll_share = (LinearLayout) itemView.findViewById(R.id.ll_share);
            ll_favorite = (LinearLayout) itemView.findViewById(R.id.ll_favorite);

            catalogPriceOld.setPaintFlags(catalogPriceOld.getPaintFlags()| Paint.STRIKE_THRU_TEXT_FLAG);

        }
    }

    ArrayList<Integer> getTableBasket(){

        ArrayList<Integer> id_list = new ArrayList<>();
        dbHelper = new DBHelper(mContext);
        SQLiteDatabase db = dbHelper.getWritableDatabase();
        Cursor c = db.query("basket", null, null, null, null, null, null);
        if (c.moveToFirst()) {
            int id_prudactColIndex = c.getColumnIndex("id_prudact");
            do {
                id_list.add(c.getInt(id_prudactColIndex));

            } while (c.moveToNext());
        } else
            Log.d(LOG_TAG, "In basket 0 rows");
        c.close();

        return id_list;
    }

    ArrayList<Integer> getTableFavorite(){

        ArrayList<Integer> id_list = new ArrayList<>();
        dbHelper = new DBHelper(mContext);
        SQLiteDatabase db = dbHelper.getWritableDatabase();
        Cursor c = db.query("favorite", null, null, null, null, null, null);
        if (c.moveToFirst()) {
            int id_prudactColIndex = c.getColumnIndex("id_prudact");
            do {
                id_list.add(c.getInt(id_prudactColIndex));

            } while (c.moveToNext());
        } else
            Log.d(LOG_TAG, "In favorite 0 rows");
        c.close();

        return id_list;
    }
}

抱歉,它是俄语的我的应用程序图片

推荐答案

公共类AdapterTrashIncome扩展了RecyclerView.Adapter {

public class AdapterTrashIncome extends RecyclerView.Adapter {

private ArrayList<ObjectIncome> myItems = new ArrayList<>();

public AdapterTrashIncome(ArrayList<ObjectIncome> getItems, Context context){
    try {
        mContext = context;
        myItems = getItems;
        }catch (Exception e){
        Log.e(FILE_NAME, "51: " + e.toString());
        e.printStackTrace();
    }
}

public class ViewHolder extends RecyclerView.ViewHolder {
    public TextView tvContent;
    public CheckBox cbSelect;

    public ViewHolder(View v) {
        super(v);
        tvContent = (TextView) v.findViewById(R.id.tvContent);
        cbSelect = (CheckBox) v.findViewById(R.id.cbSelect);
    }
}

@Override
public void onBindViewHolder(ViewHolder holder, final int position) {
    final ObjectIncome objIncome = myItems.get(position);
    String content = "<b>lalalla</b>";
    holder.tvContent.setText(Html.fromHtml(content));

    //in some cases, it will prevent unwanted situations
    holder.cbSelect.setOnCheckedChangeListener(null);

    //if true, your checkbox will be selected, else unselected
    holder.cbSelect.setChecked(objIncome.isSelected());

    holder.cbSelect.setOnCheckedChangeListener(new OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                //set your object's last status
                objIncome.setSelected(isChecked);
        }
    });

}

}

这篇关于在RecyclerView中使用条件IF的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

1403页,肝出来的..

09-06 18:43