Android 如何在同一个recyclerview的适配器类内更新recyclerview?

Android 如何在同一个recyclerview的适配器类内更新recyclerview?,android,android-recyclerview,Android,Android Recyclerview,我有一个回收站。我想从其适配器类更新recycler视图。 我尝试了notiftDataSetChanged(),但它只在主类中起作用。 下面是recyclerview适配器类的代码 package com.library.apple.food; import android.content.Context; import android.content.Intent; public class CartAdapter extends RecyclerView.Adapter<Ca

我有一个回收站。我想从其适配器类更新recycler视图。 我尝试了
notiftDataSetChanged()
,但它只在主类中起作用。 下面是recyclerview适配器类的代码

package com.library.apple.food;

import android.content.Context;
import android.content.Intent;


public class CartAdapter extends 
RecyclerView.Adapter<CartAdapter.MyViewHolder> {

private Context context;
private List<CartItem> list;
private String auth_token;
private RecyclerView recyclerView;

public CartAdapter(Context context, List<CartItem> list, String 
auth_token, RecyclerView recyclerView){
    this.context = context;
    this.list = list;
    this.auth_token = auth_token;
    this.recyclerView = recyclerView;


}



@NonNull
@Override
public MyViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, 
int i) {
View view = LayoutInflater.from(viewGroup.getContext())
.inflate(R.layout.row_cart,viewGroup,false);
    CartAdapter.MyViewHolder myViewHolder = new 
    CartAdapter.MyViewHolder(view);
    return myViewHolder;
}

@Override
public void onBindViewHolder(@NonNull MyViewHolder viewHolder, 
final int i) {

    final CartItem item = list.get(i);

    viewHolder.title_cart.setText(item.getTitle_cart());
    viewHolder.no_cart.setText(item.getNo_cart());

    String price1 = context.getString(R.string.price,item.getPrice_cart());

    viewHolder.price_cart.setText(price1);


    String veg = item.getVegnon_cart();
    if (veg.equalsIgnoreCase("false")) {
        viewHolder.vegnon_cart.setImageResource(R.drawable.non_veg);

    }


    //-----------------------------------------------------------------------------


    //cart plus button
    viewHolder.btn_plus_cart.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(final View view) {

            String url_plus = "https://www.hungermela.com/api/v1/change-quantity/";
            final String item_id = item.getCart_item_id();


            RequestQueue queue = Volley.newRequestQueue(context);

            StringRequest postRequest = new StringRequest(Request.Method.POST, url_plus,
                    new Response.Listener<String>() {
                        @Override
                        public void onResponse(String response) {
                            // response
                            Log.d("Response", response);

//HERE I WANT TO UPDATE MY RECYCLERVIEW




                        }
                    },
                    new Response.ErrorListener() {
                        @Override
                        public void onErrorResponse(VolleyError error) {
                            // error
                            Log.d("Error.Response", error.toString());

                        }
                    }
            ) {


                @Override
                public Map<String, String> getHeaders() throws AuthFailureError {
                    Map<String, String> params = new HashMap<String, String>();

                    params.put("Authorization", "Token "+auth_token);
                    return params;
                }


                @Override
                protected Map<String, String> getParams() {
                    Map<String, String> params = new HashMap<String, String>();
                    params.put("pk", item_id);

                    int quantity = Integer.parseInt(item.getNo_cart());
                    String quan = String.valueOf(quantity+1);
                    params.put("quantity",quan);

                    return params;
                }
            };
            queue.add(postRequest);




        }
    });
    //cart plus ends here


    //-----------------------------------------------------------------------------


    //cart minus button
    viewHolder.btn_minus_cart.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(final View view) {

            int quantity = Integer.parseInt(item.getNo_cart());



            if(quantity==1){



                String url_minus = "https://www.hungermela.com/api/v1/delete-item/";
                final String item_id = item.getCart_item_id();



                RequestQueue queue = Volley.newRequestQueue(context);

                StringRequest postRequest = new StringRequest(Request.Method.POST, url_minus,
                        new Response.Listener<String>() {
                            @Override
                            public void onResponse(String response) {
                                // response
                                Log.d("Response", response);



                            AppCompatActivity activity = (AppCompatActivity) view.getContext();
                            Fragment myFragment = new CartFragment();

                            activity.getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, myFragment).addToBackStack(null).commit();




                                notifyDataSetChanged();

                            }
                        },
                        new Response.ErrorListener() {
                            @Override
                            public void onErrorResponse(VolleyError error) {
                                // error
                                Log.d("Error.Response", error.toString());

                            }
                        }
                ) {


                    @Override
                    public Map<String, String> getHeaders() throws AuthFailureError {
                        Map<String, String> params = new HashMap<String, String>();

                        params.put("Authorization", "Token "+auth_token);
                        return params;
                    }


                    @Override
                    protected Map<String, String> getParams() {
                        Map<String, String> params = new HashMap<String, String>();
                        params.put("pk", item.getId_id());



                        return params;
                    }
                };
                queue.add(postRequest);





            }



            else if(quantity > 1){


                String url_minus = "https://www.hungermela.com/api/v1/change-quantity/";
                final String item_id = item.getCart_item_id();



                RequestQueue queue = Volley.newRequestQueue(context);

                StringRequest postRequest = new StringRequest(Request.Method.POST, url_minus,
                        new Response.Listener<String>() {
                            @Override
                            public void onResponse(String response) {
                                // response
                                Log.d("Response", response);

                            AppCompatActivity activity = (AppCompatActivity) view.getContext();
                            Fragment myFragment = new CartFragment();

                            activity.getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, myFragment).addToBackStack(null).commit();




                                notifyDataSetChanged();

                            }
                        },
                        new Response.ErrorListener() {
                            @Override
                            public void onErrorResponse(VolleyError error) {
                                // error
                                Log.d("Error.Response", error.toString());

                            }
                        }
                ) {


                    @Override
                    public Map<String, String> getHeaders() throws AuthFailureError {
                        Map<String, String> params = new HashMap<String, String>();

                        params.put("Authorization", "Token "+auth_token);
                        return params;
                    }


                    @Override
                    protected Map<String, String> getParams() {
                        Map<String, String> params = new HashMap<String, String>();
                        params.put("pk", item_id);

                        int quantity = Integer.parseInt(item.getNo_cart());
                        String quan = String.valueOf(quantity-1);
                        params.put("quantity",quan);


                        return params;
                    }
                };
                queue.add(postRequest);



            }





        }
    });
    //cart minus ends here


    //-----------------------------------------------------------------------------




}

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

class MyViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {

    TextView title_cart, no_cart, price_cart;
    ImageView vegnon_cart;
    Button btn_minus_cart, btn_plus_cart;

    public MyViewHolder(@NonNull View itemView) {
        super(itemView);

        vegnon_cart = (ImageView)itemView.findViewById(R.id.vegnon_cart);
        title_cart = (TextView)itemView.findViewById(R.id.title_cart);
        no_cart = (TextView)itemView.findViewById(R.id.no_cart);
        price_cart = (TextView)itemView.findViewById(R.id.price_cart);

        //Button
        btn_minus_cart = (Button) itemView.findViewById(R.id.btn_minus_cart);
        btn_plus_cart = (Button) itemView.findViewById(R.id.btn_plus_cart);
    }

    @Override
    public void onClick(View view) {

    }
}
}
package com.library.apple.food;
导入android.content.Context;
导入android.content.Intent;
公共类适配器扩展
RecyclerView.适配器{
私人语境;
私人名单;
私有字符串身份验证令牌;
私人回收站;
公共CartAdapter(上下文、列表、字符串
验证令牌,RecyclerView(RecyclerView){
this.context=上下文;
this.list=列表;
this.auth\u token=auth\u token;
this.recyclerView=recyclerView;
}
@非空
@凌驾
public MyViewHolder onCreateViewHolder(@NonNull ViewGroup ViewGroup,
int i){
View=LayoutFlater.from(viewGroup.getContext())
.充气(右布局,行车,视图组,假);
CartAdapter.MyViewHolder MyViewHolder=新建
CartAdapter.MyViewHolder(视图);
返回myViewHolder;
}
@凌驾
BindViewHolder上的公共无效(@NonNull MyViewHolder viewHolder,
期末考试(一){
最终CartItem=list.get(i);
viewHolder.title_cart.setText(item.getTitle_cart());
viewHolder.no_cart.setText(item.getNo_cart());
String price1=context.getString(R.String.price,item.getPrice_cart());
viewHolder.price\u cart.setText(price1);
字符串veg=item.getVegnon_cart();
if(植物等效信号情况(“假”)){
viewHolder.vegnon_cart.setImageResource(R.drawable.non_veg);
}
//-----------------------------------------------------------------------------
//购物车加按钮
viewHolder.btn\u plus\u cart.setOnClickListener(新视图.OnClickListener()){
@凌驾
公共void onClick(最终视图){
字符串url_plus=”https://www.hungermela.com/api/v1/change-quantity/";
最后一个字符串item_id=item.getCart_item_id();
RequestQueue=Volley.newRequestQueue(上下文);
StringRequest postRequest=新的StringRequest(Request.Method.POST,url\u plus,
新的Response.Listener(){
@凌驾
公共void onResponse(字符串响应){
//回应
Log.d(“响应”,响应);
//我想在这里更新我的RECYCLERVIEW
}
},
新的Response.ErrorListener(){
@凌驾
公共无效onErrorResponse(截击错误){
//错误
Log.d(“Error.Response”,Error.toString());
}
}
) {
@凌驾
公共映射getHeaders()引发AuthFailureError{
Map params=新的HashMap();
参数put(“授权”、“令牌”+认证令牌);
返回参数;
}
@凌驾
受保护的映射getParams(){
Map params=新的HashMap();
参数put(“主键”,物料标识);
int quantity=Integer.parseInt(item.getNo_cart());
String quan=String.valueOf(数量+1);
参数put(“数量”,全);
返回参数;
}
};
添加(postRequest);
}
});
//cart plus到此结束
//-----------------------------------------------------------------------------
//购物车减号按钮
viewHolder.btn\u减去\u cart.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(最终视图){
int quantity=Integer.parseInt(item.getNo_cart());
如果(数量=1){
字符串url_减号=”https://www.hungermela.com/api/v1/delete-item/";
最后一个字符串item_id=item.getCart_item_id();
RequestQueue=Volley.newRequestQueue(上下文);
StringRequest postRequest=新的StringRequest(Request.Method.POST,url_减号,
新的Response.Listener(){
@凌驾
公共void onResponse(字符串响应){
//回应
Log.d(“响应”,响应);
AppCompatActivity=(AppCompatActivity)视图。getContext();
片段myFragment=新的CartFragment();
activity.getSupportFragmentManager().beginTransaction().replace(R.id.fragment_容器,myFragment).addToBackStack(null.commit();
notifyDataSetChanged();
}
},
新的Response.ErrorListener(){
@凌驾
公共无效onErrorResponse(截击错误){
//错误
Log.d(“Error.Response”,Error.toString());
}
}
) {
@凌驾
公共映射getHeaders()引发AuthFailureError{
Map params=新的HashMap();
参数put(“授权”、“令牌”+认证令牌);
返回参数;
}
@凌驾
受保护的映射getParams(){
Map params=新的HashMap();
参数put(“pk”,item.getId_id());
返回参数;
}
};
添加(postRequest);
}
否则,如果(数量>1){
字符串url_减号=”https://www.hunge
final CartItem item = list.get(i);
viewHolder.btn_plus_cart.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(final View view) {
        int count = item.getNo_cart()+1; //may be you can use response from network
        item.setNo_cart(count); //update item
        notifyDataSetChanged();
    }
}
public void updateData( List<CartItem> newData)

 {
     list.clear();
     list.addAll(newData);
     this.notiftDataSetChanged( );

 }
 public void updateOnlyOneItem(CartItem newItem,int position){
     this.list.set(position, newItem);
     this.notifyItemChanged();
 }