обновить RecyclerView после нажатия на кнопку - PullRequest
0 голосов
/ 04 июля 2018

У меня есть корзина В этой корзине я хочу нажать на кнопку «плюс» Мой RecyclerView будет обновлен

В этой корзине я хочу нажать на кнопку мины Мой RecyclerView будет обновлен

А также нажмите на кнопку удаления, чтобы удалить элемент из RecyclerView Большое спасибо за вашу помощь

Код

public class ShopCartAdapter extends RecyclerView.Adapter<ShopCartAdapter.ShopCartHolder> {
List<ShopCartGet> mDataset;
Context context;
 String email,password;
List<ShopCartGet> list;
ShopCartAdapter adapter;

public class ShopCartHolder extends RecyclerView.ViewHolder {
    TextView title,price;
    TextView number_order,priceall;
    ImageView img,delete,minus,plus;
    Spinner sp;
    TextView id;
    int currentNos;
    int ids=0;
    public void update(List<ShopCartGet> list) {  
        mDataset = list; 
        notifyDataSetChanged(); 
    }
    public void increment(){
         currentNos = Integer.parseInt(number_order.getText().toString()) ;
        number_order.setText(String.valueOf(++currentNos));
        ids = Integer.parseInt(id.getText().toString());
         email= ShopCart.string_from_sp;
         password = ShopCart.string_from_sp1;
    }

    public void update() {
        String BASE_URL = "http://laravel.cahoo.ir/json/android/update_basket.php";
        StringRequest stringRequest = new StringRequest(Request.Method.POST, BASE_URL, new Response.Listener<String>() {
            @Override
            public void onResponse(String s) {
            }
        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError volleyError) {
            }
        }) {
            @Override
            protected Map<String, String> getParams() throws AuthFailureError {
                Map<String, String> params = new HashMap<>();
                params.put("email", email);
                params.put("order_id", String.valueOf(ids));
                params.put("number_order", String.valueOf(currentNos));
                params.put("password", password);                 
                return params;
            }

            @Override
            public Map<String, String> getHeaders() throws AuthFailureError {
                return super.getHeaders();
            }
        };
        stringRequest.setRetryPolicy(new DefaultRetryPolicy(20000, 1, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
        RequestQueue queue = Volley.newRequestQueue(context);
        queue.add(stringRequest);
    }
    public void delete() {
        String BASE_URL = "xxx";
        StringRequest stringRequest = new StringRequest(Request.Method.POST, BASE_URL, new Response.Listener<String>() {
            @Override
            public void onResponse(String s) {
            }
        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError volleyError) {
            }
        }) {
            @Override
            protected Map<String, String> getParams() throws AuthFailureError {
                Map<String, String> params = new HashMap<>();
                params.put("email", email);
                params.put("order_id", String.valueOf(ids));
                params.put("number_order", String.valueOf(currentNos));
                params.put("password", password);
                return params;
            }

            @Override
            public Map<String, String> getHeaders() throws AuthFailureError {
                return super.getHeaders();
            }
        };
        stringRequest.setRetryPolicy(new DefaultRetryPolicy(20000, 1, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
        RequestQueue queue = Volley.newRequestQueue(context);
        queue.add(stringRequest);
    }

    public ShopCartHolder(View itemView) { 
        super(itemView);
        title = (TextView) itemView.findViewById(R.id.text_info);
        number_order = (TextView) itemView.findViewById(R.id.number_order);
        price = (TextView) itemView.findViewById(R.id.price);
        priceall = (TextView) itemView.findViewById(R.id.priceall);
        img = (ImageView) itemView.findViewById(R.id.image_mahsol);
        delete = (ImageView)itemView.findViewById(R.id.delet);
        minus =(ImageView) itemView.findViewById(R.id.minus);
        plus = (ImageView) itemView.findViewById(R.id.plus);
        id = (TextView) itemView.findViewById(R.id.ids);
        plus.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view ) {
                increment();        
                update();
            }
        });       
        delete.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                delete();
            }  });   } }
public ShopCartAdapter(Context context, List<ShopCartGet> myDataset) { 
    this.mDataset = myDataset;
    this.context = context;
}
@Override
public ShopCartAdapter.ShopCartHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
    View view = LayoutInflater.from(parent.getContext())
            .inflate(R.layout.sample_shop_cart, parent, false); 
    ShopCartAdapter.ShopCartHolder dataObjectHolder = new ShopCartAdapter.ShopCartHolder(view);
    return dataObjectHolder;
}
@Override
public void onBindViewHolder(final ShopCartAdapter.ShopCartHolder holder, final int position) { 
    holder.title.setText(mDataset.get(position).title);  
    holder.price.setText(mDataset.get(position).price);
    holder.number_order.setText(mDataset.get(position).number_order);
    holder.id.setText(String.valueOf(mDataset.get(position).id));
    holder.priceall.setText(mDataset.get(position).pricall);   
}
@Override
public int getItemCount() { 
    return mDataset.size();
}}

Результат:

enter image description here

1 Ответ

0 голосов
/ 04 июля 2018

Попробуйте этот код .. Создайте интерфейс для обработки событий нажатия плюс и минус, как показано ниже. Вы создаете два интерфейса для обработки плюса и минуса. определить интерфейс в класс адаптера ..

   OnItemClick onItemClick;

public void setOnItemClick(OnItemClick onItemClick) {
    this.onItemClick = onItemClick;
}

public interface OnItemClick {
    void getPosition(String data); //pass any things
}

после события click в методе onBind ..

@Override
public void onBindViewHolder(ItemViewHolder holder, final int position) {
    // below code handle click event on recycler view item.
    final String data = mStringList.get(position);
    holder.textView.setText(data);
    holder.pulshButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            onItemClick.getPosition(data);
        }
    });
}

после того, как этот адаптер привязан к программе просмотра, это означает, что адаптер не равен NULL, а затем вызовите приведенный ниже код.

        adpater.setOnItemClick(new RecyclerViewAdpater.OnItemClick() {
        @Override
        public void getPosition(String data) {
            Log.d("Data of Click::",data);
            adpater.notifyDataSetChanged();
        }
    });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...