Java 如何从recyclerVIew viewHolder onClick内更改片段(recyclerVIew外部)中的文本

Java 如何从recyclerVIew viewHolder onClick内更改片段(recyclerVIew外部)中的文本,java,android,android-recyclerview,fragment,Java,Android,Android Recyclerview,Fragment,这就是我需要的。 删除一个项目时,需要更新总值。 我设法删除了该项,并在AdapterViewHolder中以json响应的形式获得了总值。不知道如何设置更新片段中的文本 这是我的车碎片 Cart.java 公共类Cart扩展片段{ public Cart() { // Required empty public constructor } Context context; Activity activity; List<GetDataAdapter> GetDataAda

这就是我需要的。 删除一个项目时,需要更新总值。 我设法删除了该项,并在AdapterViewHolder中以json响应的形式获得了总值。不知道如何设置更新片段中的文本

这是我的车碎片 Cart.java 公共类Cart扩展片段{

public Cart() {
    // Required empty public constructor
}

Context context;
Activity activity;
List<GetDataAdapter> GetDataAdapter1;
RecyclerView recyclerView;
RecyclerView.LayoutManager recyclerViewlayoutManager;
RecyclerView.Adapter recyclerViewadapter;

String GET_JSON_DATA_HTTP_URL = "http://192.168.0.106/slbros/index.php/get/cart?p_d_id=12&lan=en";
String Total_URL = "http://192.168.0.106/slbros/index.php/get/total?p_d_id=12";
String JSON_CDID = "cart_dtl_id";
String JSON_IMG_URL = "img_url";
String JSON_QTY = "qty";
String JSON_NAME = "name";
String JSON_UNIT = "unit";
String JSON_PRICE = "price";
String JSON_P_ID = "product_id";


JsonArrayRequest jsonArrayRequest;
RequestQueue requestQueue;
ProgressBar progressBar;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    View v = inflater.inflate(R.layout.fragment_cart, container, false);

    TextView total_tv = (TextView)v.findViewById(R.id.total_payment_value);
    //recycler view
    GetDataAdapter1 = new ArrayList<>();

    recyclerView = (RecyclerView) v.findViewById(R.id.rv_cart_list);
    progressBar = (ProgressBar) v.findViewById(R.id.progressBar2);

    recyclerView.setHasFixedSize(true);

    recyclerViewlayoutManager = new LinearLayoutManager(getContext());

    recyclerView.setLayoutManager(recyclerViewlayoutManager);

    progressBar.setVisibility(View.VISIBLE);

    JSON_DATA_WEB_CALL();

    return v;
}

@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);
    //you can set the title for your toolbar here for different fragments different titles
    getActivity().setTitle("Cart");
}

public void JSON_DATA_WEB_CALL() {

    jsonArrayRequest = new JsonArrayRequest(GET_JSON_DATA_HTTP_URL,

            new Response.Listener<JSONArray>() {
                @Override
                public void onResponse(JSONArray response) {
                    progressBar.setVisibility(View.GONE);
                    JSON_PARSE_DATA_AFTER_WEBCALL(response);
                }
            },
            new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {
                    progressBar.setVisibility(View.GONE);
                    Toast.makeText(getContext(), "some error....", Toast.LENGTH_SHORT).show();
                }
            }
    );

    requestQueue = Volley.newRequestQueue(getContext());

    jsonArrayRequest.setRetryPolicy(new DefaultRetryPolicy(60000, 0, 1));
    requestQueue.add(jsonArrayRequest);
}

public void JSON_PARSE_DATA_AFTER_WEBCALL(JSONArray array) {

    for (int i = 0; i < array.length(); i++) {

        GetDataAdapter GetDataAdapter2 = new GetDataAdapter();

        JSONObject json = null;
        try {

            json = array.getJSONObject(i);

            GetDataAdapter2.setImg_url(json.getString(JSON_IMG_URL));
            GetDataAdapter2.setName(json.getString(JSON_NAME));
            GetDataAdapter2.setPrice(json.getInt(JSON_PRICE));
            GetDataAdapter2.setProduct_id(json.getInt(JSON_P_ID));
            GetDataAdapter2.setCart_dtl_id(json.getInt(JSON_CDID));
            GetDataAdapter2.setProduct_qty(json.getInt(JSON_QTY));
        } catch (JSONException e) {

            e.printStackTrace();
        }
        GetDataAdapter1.add(GetDataAdapter2);
    }

    recyclerViewadapter = new RecyclerViewAdapterCart(GetDataAdapter1, getContext());

    recyclerView.setAdapter(recyclerViewadapter);
}}
公共购物车(){
//必需的空公共构造函数
}
语境;
活动;
列出GetDataAdapter1;
回收视图回收视图;
RecyclerView.LayoutManager recyclerViewlayoutManager;
适配器RecycleWebAdapter;
字符串GET_JSON_DATA_HTTP_URL=”http://192.168.0.106/slbros/index.php/get/cart?p_d_id=12&lan=en";
字符串总URL=”http://192.168.0.106/slbros/index.php/get/total?p_d_id=12";
字符串JSON\u CDID=“购物车\u dtl\u id”;
字符串JSON\u IMG\u URL=“IMG\u URL”;
字符串JSON_QTY=“QTY”;
字符串JSON_NAME=“NAME”;
字符串JSON_UNIT=“UNIT”;
字符串JSON_PRICE=“PRICE”;
字符串JSON_P_ID=“product_ID”;
JsonArrayRequest JsonArrayRequest;
请求队列请求队列;
ProgressBar ProgressBar;
@凌驾
创建视图上的公共视图(布局、充气机、视图组容器、,
Bundle savedInstanceState){
//为该碎片膨胀布局
视图v=充气机。充气(R.layout.fragment_推车,容器,错误);
TextView总电视=(TextView)v.findViewById(R.id.total\u payment\u value);
//回收者视图
GetDataAdapter1=新的ArrayList();
recyclerView=(recyclerView)v.findViewById(R.id.rv\u cart\u list);
progressBar=(progressBar)v.findViewById(R.id.progressBar2);
recyclerView.setHasFixedSize(true);
recyclerViewlayoutManager=新的LinearLayoutManager(getContext());
recyclerView.setLayoutManager(recyclerViewlayoutManager);
progressBar.setVisibility(View.VISIBLE);
JSON_DATA_WEB_CALL();
返回v;
}
@凌驾
已创建视图上的公共void(视图,@Nullable Bundle savedInstanceState){
super.onViewCreated(视图,savedInstanceState);
//您可以在此处为不同的片段或不同的标题设置工具栏的标题
getActivity().setTitle(“购物车”);
}
public void JSON_DATA_WEB_CALL(){
jsonArrayRequest=新的jsonArrayRequest(获取JSON数据、HTTP URL、,
新的Response.Listener(){
@凌驾
公共void onResponse(JSONArray响应){
progressBar.setVisibility(View.GONE);
JSON在WEBCALL之后解析数据(响应);
}
},
新的Response.ErrorListener(){
@凌驾
公共无效onErrorResponse(截击错误){
progressBar.setVisibility(View.GONE);
Toast.makeText(getContext(),“某些错误…”,Toast.LENGTH_SHORT.show();
}
}
);
requestQueue=Volley.newRequestQueue(getContext());
setRetryPolicy(新的DefaultRetryPolicy(60000,0,1));
add(jsonArrayRequest);
}
public void JSON\u解析\u数据\u WEBCALL之后(JSONArray数组){
对于(int i=0;i
这是我的适配器 RecycleServiceAdapterCart.java

public class RecyclerViewAdapterCart extends RecyclerView.Adapter<RecyclerViewAdapterCart.ViewHolder> {

JsonArrayRequest jsonArrayRequest ;
RequestQueue requestQueue ;
String baseURL = "http://192.168.0.106/slbros/index.php/";
Context context;
Activity activity;
List<GetDataAdapter> getDataAdapter;

ImageLoader imageLoader1;

public RecyclerViewAdapterCart(List<GetDataAdapter> getDataAdapter, Context context) {

    super();
    this.getDataAdapter = getDataAdapter;
    this.context = context;
}

@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {

    View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.cart_list_item, parent, false);

    ViewHolder viewHolder = new ViewHolder(v);

    return viewHolder;
}

@Override
public void onBindViewHolder(ViewHolder Viewholder, int position) {

    GetDataAdapter getDataAdapter1 = getDataAdapter.get(position);

    imageLoader1 = ServerImageParseAdapter.getInstance(context).getImageLoader();

    imageLoader1.get(getDataAdapter1.getImg_url(),
            ImageLoader.getImageListener(
                    Viewholder.product_image_view,//Server Image
                    R.mipmap.ic_launcher,//Before loading server image the default showing image.
                    android.R.drawable.ic_dialog_alert //Error image if requested image dose not found on server.
            )
    );

    Viewholder.product_image_view.setImageUrl(getDataAdapter1.getImg_url(), imageLoader1);
    Viewholder.product_name_TextView.setText(getDataAdapter1.getName()+" - "+String.valueOf(getDataAdapter1.getProduct_qty()));
    Viewholder.product_price_qty_TextView.setText(getDataAdapter1.getPrice()+".00 Rs X "+String.valueOf(getDataAdapter1.getProduct_qty()));
    Viewholder.product_t_price_TextView.setText(String.valueOf(getDataAdapter1.getProduct_qty()*getDataAdapter1.getPrice())+".00 Rs");
    Viewholder.product_id_TextView.setText(String.valueOf(getDataAdapter1.getProduct_id()));
    Viewholder.cart_dtl_id_TextView.setText(String.valueOf(getDataAdapter1.getCart_dtl_id()));
}

@Override
public int getItemCount() {

    return getDataAdapter.size();
}

class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {

    public NetworkImageView product_image_view;
    public TextView product_name_TextView;
    public TextView product_price_qty_TextView;
    public TextView product_t_price_TextView;
    public TextView product_id_TextView;
    public TextView cart_dtl_id_TextView;
    public Button p_cancel_btn;


    public ViewHolder(View itemView) {

        super(itemView);

        product_image_view = (NetworkImageView) itemView.findViewById(R.id.item_image1);
        product_name_TextView = (TextView) itemView.findViewById(R.id.product_name);
        product_price_qty_TextView = (TextView) itemView.findViewById(R.id.p_qty_price);
        product_t_price_TextView = (TextView) itemView.findViewById(R.id.p_t__price);
        product_id_TextView = (TextView) itemView.findViewById(R.id.product_id_tv);
        cart_dtl_id_TextView = (TextView) itemView.findViewById(R.id.cart_dtl_id_tv);
        p_cancel_btn = (Button)itemView.findViewById(R.id.p_cancel_btn);

        // set item view
        p_cancel_btn.setOnClickListener(this);
    }

    @Override
    public void onClick(final View v) {
        String str = product_name_TextView.getText().toString();
        //Toast.makeText(v.getContext(), str, Toast.LENGTH_SHORT).show();
        String cart_dtl_id = cart_dtl_id_TextView.getText().toString();

        String url = baseURL + "delete/select?cart_dtl_id="+cart_dtl_id;

        jsonArrayRequest = new JsonArrayRequest(url,

                new Response.Listener<JSONArray>() {
                    @Override
                    public void onResponse(JSONArray response) {
                        //progressBar.setVisibility(View.GONE);
                        Toast.makeText(v.getContext(), "response -- " + response, Toast.LENGTH_LONG).show(); 





// here, I have to change the total TextView in Fragment
// Total_TextView.setText("1000rs")




                    }
                },
                new Response.ErrorListener() {
                    @Override
                    public void onErrorResponse(VolleyError error) {
                        Toast.makeText(v.getContext(), "error", Toast.LENGTH_LONG).show();
                    }
                }
        );

        requestQueue = Volley.newRequestQueue(v.getContext());
        jsonArrayRequest.setRetryPolicy(new DefaultRetryPolicy(60000,0,1));
        requestQueue.add(jsonArrayRequest);

        getDataAdapter.remove(getAdapterPosition());
        notifyItemRemoved(getAdapterPosition());
        notifyItemRangeChanged(getAdapterPosition(),getDataAdapter.size());

    }
}}
公共类RecycleServiceAdapterCart扩展了RecyclerView.Adapter{ JsonArrayRequest JsonArrayRequest; 请求队列请求队列; 字符串baseURL=”http://192.168.0.106/slbros/index.php/"; 语境; 活动; 列出getDataAdapter; 图像加载器图像加载器1; 公共RecycleServiceAdapterCart(列表getDataAdapter,上下文){ 超级(); this.getDataAdapter=getDataAdapter; this.context=上下文; } @凌驾 public ViewHolder onCreateViewHolder(视图组父级,int-viewType){ 视图v=LayoutInflater.from(parent.getContext()).flate(R.layout.cart\u list\u项目,parent,false); 视窗夹持器视窗夹持器=新视窗夹持器(v); 返回视图持有者; } @凌驾 公共无效onBindViewHolder(ViewHolder ViewHolder,int位置){ GetDataAdapter getDataAdapter1=GetDataAdapter.get(位置); imageLoader1=ServerImageParseAdapter.getInstance(上下文).getImageLoader(); imageLoader1.get(getDataAdapter1.getImg_url(), ImageLoader.getImageListener( Viewholder.product\u image\u视图,//服务器映像 R.mipmap.ic_启动器,//在加载服务器映像之前,默认显示映像。 android.R.drawable.ic_对话框_警报//如果在服务器上找不到请求的图像,则显示错误图像。 ) ); Viewholder.product\u image\u view.setImageUrl(getDataAdapter1.getImg\u url(),imageLoader1); Viewholder.product_name_TextView.setText(getDataAdapter1.getName()+“-”+String.valueOf(getDataAdapter1.getProduct_qty()); Viewholder.product\u price\u qty\u TextView.setText(getDataAdapter1.getPrice()+“.00 Rs X”+String.valueOf(getDataAdapter1.getProduct\u qty()); Viewholder.product\t\u price\u TextView.setText(String.valueOf(getDataAdapter1.getProduct\u qty()*getDataAdapter1.getPrice())+“.00 Rs”); Viewholder.product_id_TextView.setText(String.valueOf(getDataAdapter1.getProduct_id()); Viewholder.cart\u dtl\u id\u TextView.setText(Str
public interface ItemsChangedListener {
    void onItemsChanged(int sum);

}

public void setItemsChangedListener(ItemsChangedListener listener) {
 this.itemsChangedListener = listener;

}

 new Response.Listener<JSONArray>() {
                @Override
                public void onResponse(JSONArray response) {
                    //progressBar.setVisibility(View.GONE);
                   // Calc here the Value if you can.
                  if(listener != null) listener.onItemsChanged(sum);
  }
@override
public void onItemsChanged(int sum) {
   //Update TextView    
}