Adapter中自定义回调接口

 private onItemClick listener;


viewHolder.llShopcaritem.setOnClickListener(new View.OnClickListener() {
    
    
            @Override
            public void onClick(View v) {
    
    
                if(listener!=null){
    
    
                    Log.e("wy", "76onClick: " );
                    listener.onClick(viewHolder.llShopcaritem,position);
                }
            }
        });



  public interface onItemClick {
    
    
        void onClick(View view, int position);
    }

    public void setListener(onItemClick listener) {
    
    
        this.listener = listener;
    }

activity中回调出来

 adapter.setListener(new ShopCarLvAdapter.onItemClick() {
    
    
                        @Override
                        public void onClick(View view, int position) {
    
    
                            Log.e("wy","点击了:"+view+"   "+position);
                        }
                    });

全代码
adapter

package com.ruhai.yibei.adapter;

import android.content.Context;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.CheckBox;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;

import com.bumptech.glide.Glide;
import com.ruhai.yibei.R;
import com.ruhai.yibei.bean.CollectBean;
import com.ruhai.yibei.bean.ShopCarBean;

import java.util.List;

public class ShopCarLvAdapter extends BaseAdapter {
    
    

    private List<ShopCarBean.DataDTO> data;
    private Context context;
    private onItemClick listener;

    public ShopCarLvAdapter(List<ShopCarBean.DataDTO> data, Context context) {
    
    
        this.data = data;
        this.context = context;
    }

    @Override
    public int getCount() {
    
    
        return data.size();
    }

    @Override
    public Object getItem(int position) {
    
    
        return null;
    }

    @Override
    public long getItemId(int position) {
    
    
        return position;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
    
    
        ViewHolder viewHolder;
        if (convertView == null) {
    
    
            viewHolder = new ViewHolder();
            convertView = LayoutInflater.from(context).inflate(R.layout.shopcar_item, parent, false);

            viewHolder.footIv = (ImageView) convertView.findViewById(R.id.foot_iv);
            viewHolder.describeTv = (TextView) convertView.findViewById(R.id.describe_tv);
            viewHolder.yewuTv = (TextView) convertView.findViewById(R.id.yewu_tv);
            viewHolder.titleShopCarTv = (TextView) convertView.findViewById(R.id.title_shop_car_tv);
            viewHolder.llShopcaritem = (LinearLayout) convertView.findViewById(R.id.ll_shopcaritem);
            viewHolder.cbShopCar = convertView.findViewById(R.id.cb_shop_car);
            convertView.setTag(viewHolder);
        } else {
    
    
            viewHolder = (ViewHolder) convertView.getTag();
        }


        Glide.with(context).load("https:" + data.get(position).getShoppingPic()).into(viewHolder.footIv);
        viewHolder.describeTv.setText(data.get(position).getShoppingName());
        viewHolder.yewuTv.setText(data.get(position).getServicDesc());
        viewHolder.cbShopCar.setChecked(data.get(position).isCheck);

        viewHolder.cbShopCar.setOnClickListener(new View.OnClickListener() {
    
    
            @Override
            public void onClick(View v) {
    
    
                if (listener != null) {
    
    
                    Log.e("wy", "76onClick: ");
                    listener.onClick(viewHolder.cbShopCar, position);
                }
            }
        });
        if (data.get(position).getType() == 1) {
    
    
            viewHolder.titleShopCarTv.setText("商品");
        } else {
    
    
            viewHolder.titleShopCarTv.setText("服务");
        }


        return convertView;
    }

    public interface onItemClick {
    
    
        void onClick(View view, int position);
    }

    public void setListener(onItemClick listener) {
    
    
        Log.e("wy", "97setListener: ");
        this.listener = listener;
    }

    private final class ViewHolder {
    
    
        private ImageView footIv;
        private TextView describeTv;
        private TextView yewuTv;
        private TextView titleShopCarTv;
        private LinearLayout llShopcaritem;
        private CheckBox cbShopCar;


    }
}



activity



import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.os.Looper;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;

import androidx.appcompat.app.AppCompatActivity;

import com.alibaba.fastjson.JSON;
import com.ruhai.yibei.Constant;
import com.ruhai.yibei.R;
import com.ruhai.yibei.adapter.CollectLvAdapter;
import com.ruhai.yibei.adapter.ShopCarLvAdapter;
import com.ruhai.yibei.bean.CollectBean;
import com.ruhai.yibei.bean.DeleteBean;
import com.ruhai.yibei.bean.DeleteShopCarRequireBean;
import com.ruhai.yibei.bean.ShopCarBean;

import org.xutils.common.Callback;
import org.xutils.http.RequestParams;
import org.xutils.x;

import java.util.ArrayList;
import java.util.List;

public class ShopCarActivity extends AppCompatActivity {
    
    
    private TextView backTv;
    private TextView titleBart;
    private TextView shopTv;
    private TextView serviceTv;
    private ListView lvFoot;
    private TextView expertTv;
    private TextView otherTv;
    List<ShopCarBean.DataDTO> recordsShop = new ArrayList<>();
    List<ShopCarBean.DataDTO> recordsService = new ArrayList<>();
    private ImageView deleteIv;
    private TextView deleteTv;
    int deletePosition;
    List<Integer> deleteShopCarIds = new ArrayList<>();
    List<ShopCarBean.DataDTO> records = new ArrayList<>();


    @Override
    protected void onCreate(Bundle savedInstanceState) {
    
    
        super.onCreate(savedInstanceState);
        setContentView(R.layout.shop_car);
        backTv = (TextView) findViewById(R.id.back_tv);
        titleBart = (TextView) findViewById(R.id.title_bart);
        lvFoot = (ListView) findViewById(R.id.lv_shop_car);
        expertTv = (TextView) findViewById(R.id.expert_tv);
        otherTv = (TextView) findViewById(R.id.other_tv);
        deleteIv = (ImageView) findViewById(R.id.delete_iv);
        deleteTv = (TextView) findViewById(R.id.delete_tv);
        deleteIv.setOnClickListener(new View.OnClickListener() {
    
    
            @Override
            public void onClick(View v) {
    
    
                DeleteShopCarRequireBean deleteShopCarRequireBean = new DeleteShopCarRequireBean();
                if (deleteShopCarIds.size() > 0) {
    
    
                    deleteShopCarRequireBean.setDeleteId(deleteShopCarIds);
                    delete(deleteShopCarRequireBean);
                } else {
    
    
                    Toast.makeText(ShopCarActivity.this, "请先选中删除条目", Toast.LENGTH_SHORT);
                }

            }
        });


        expertTv.setOnClickListener(new View.OnClickListener() {
    
    
            @Override
            public void onClick(View v) {
    
    
//                getData(4);
                Log.e("wy", "服务: ");
                expertTv.setBackground(getDrawable(R.drawable.oval_select_blue_shape));
                serviceTv.setBackground(getDrawable(R.drawable.oval_select_shape));
                shopTv.setBackground(getDrawable(R.drawable.oval_select_shape));
                otherTv.setBackground(getDrawable(R.drawable.oval_select_shape));
                if (recordsService != null) {
    
    
                    lvFoot.setAdapter(new ShopCarLvAdapter(recordsService, ShopCarActivity.this));
                }
            }
        });

        getData(1);

        backTv.setOnClickListener(new View.OnClickListener() {
    
    
            @Override
            public void onClick(View v) {
    
    
                finish();
            }
        });

        titleBart.setText("我的购物车");

        shopTv = (TextView) findViewById(R.id.shop_tv);
        serviceTv = (TextView) findViewById(R.id.service_tv);
        shopTv.setBackground(getDrawable(R.drawable.oval_select_blue_shape));
        shopTv.setOnClickListener(new View.OnClickListener() {
    
    
            @Override
            public void onClick(View v) {
    
    
                Log.e("wy", "all: ");
                shopTv.setBackground(getDrawable(R.drawable.oval_select_blue_shape));
                serviceTv.setBackground(getDrawable(R.drawable.oval_select_shape));
                expertTv.setBackground(getDrawable(R.drawable.oval_select_shape));
                otherTv.setBackground(getDrawable(R.drawable.oval_select_shape));
                getData(1);

            }
        });
        serviceTv.setOnClickListener(new View.OnClickListener() {
    
    
            @Override
            public void onClick(View v) {
    
    
                Log.e("wy", "商品: ");
                serviceTv.setBackground(getDrawable(R.drawable.oval_select_blue_shape));
                shopTv.setBackground(getDrawable(R.drawable.oval_select_shape));
                expertTv.setBackground(getDrawable(R.drawable.oval_select_shape));
                otherTv.setBackground(getDrawable(R.drawable.oval_select_shape));
//                getData(2);


                if (recordsShop != null) {
    
    
                    Log.e("wy", "onClick: " + recordsShop.size());
                    lvFoot.setAdapter(new ShopCarLvAdapter(recordsShop, ShopCarActivity.this));
                }
            }
        });


    }

    private void delete(DeleteShopCarRequireBean deleteShopCarRequireBean) {
    
    


        String deleteShopCarRequireBeanString = JSON.toJSONString(deleteShopCarRequireBean);
        Log.e("wy", "deleteShopCarRequireBeanString params: " + deleteShopCarRequireBeanString);
        RequestParams params = new RequestParams(Constant.deleteShopCar);
        params.addHeader("Authorization", Constant.authorization);
        params.addHeader("language", "zh_CN");
        params.setAsJsonContent(true);


        params.addBodyParameter("", deleteShopCarRequireBeanString);
//        params.addBodyParameter("pageSize", 50);
//        params.addBodyParameter("type", type);


        Log.e("wy", "143onViewCreated params: " + params);
        x.http().post(params, new Callback.CommonCallback<String>() {
    
    
            @Override
            public void onSuccess(String result) {
    
    
                Log.e("wy", "69 professionInfo: " + result);

                DeleteBean professionInfo = JSON.parseObject(result, DeleteBean.class);
                if (professionInfo.getCode().equals("00000000")) {
    
    
                    records.remove(deletePosition);
                    lvFoot.setAdapter(new ShopCarLvAdapter(records, ShopCarActivity.this));


                } else if (professionInfo.getCode().equals("10000011")) {
    
    
                    Log.e("wy", "87 professionInfo: " + professionInfo.getMsg());
                    Toast.makeText(x.app(), professionInfo.getMsg(), Toast.LENGTH_SHORT).show();


                } else {
    
    
                    Toast.makeText(x.app(), professionInfo.getMsg(), Toast.LENGTH_SHORT).show();
                }


            }

            @Override
            public void onError(Throwable ex, boolean isOnCallback) {
    
    
                Log.e("wy", "result: " + ex.getMessage());
            }

            @Override
            public void onCancelled(CancelledException cex) {
    
    
                Toast.makeText(x.app(), "cancelled", Toast.LENGTH_LONG).show();
            }

            @Override
            public void onFinished() {
    
    

            }
        });


    }

    private void getData(int type) {
    
    

        RequestParams params = new RequestParams(Constant.appPlatformShoppingCart);
        params.addHeader("Authorization", Constant.authorization);
        params.addHeader("language", "zh_CN");
        params.setAsJsonContent(true);
//        params.addBodyParameter("currentPage", 1);
//        params.addBodyParameter("pageSize", 50);
//        params.addBodyParameter("type", type);


        Log.e("wy", "74onViewCreated params: " + params);
        x.http().get(params, new Callback.CommonCallback<String>() {
    
    
            @Override
            public void onSuccess(String result) {
    
    
                Log.e("wy", "69 professionInfo: " + result);

                ShopCarBean professionInfo = JSON.parseObject(result, ShopCarBean.class);
                if (professionInfo.getCode().equals("00000000")) {
    
    
                    records = professionInfo.getData();
                    if (recordsShop.size() < 1 && recordsService.size() < 1) {
    
    
                        for (int i = 0; i < records.size(); i++) {
    
    
                            if (records.get(i).getType() == 1) {
    
    
                                recordsShop.add(records.get(i));
                            } else {
    
    
                                recordsService.add(records.get(i));
                            }

                        }
                    }

                    Log.e("wy", "" + (Thread.currentThread() == Looper.getMainLooper().getThread()));
                    ShopCarLvAdapter adapter = new ShopCarLvAdapter(records, ShopCarActivity.this);
                    lvFoot.setAdapter(adapter);
//                    adapter.setListener((view, index) -> {
    
    
//                        Log.e("wy","点击了:"+view+"   "+index);
//                    });
                    adapter.setListener(new ShopCarLvAdapter.onItemClick() {
    
    
                        @Override
                        public void onClick(View view, int position) {
    
    
                            Log.e("wy","点击了:"+view+"   "+position);
                        }
                    });
//                    lvFoot.setOnItemClickListener(new AdapterView.OnItemClickListener() {
    
    
//                        @Override
//                        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
    
    
//                            Log.e("wy", "231onItemClick deletePosition: " + position);
                            Log.e("wy", "onItemClick deletePosition: "+deletePosition );
//
//                            deletePosition = position;
//                            int id1 = records.get(position).getId();
//                            deleteShopCarIds.add(id1);
//
//
                            Intent intent = new Intent(ShopCarActivity.this, ShopDetailActivity.class);
                            intent.putExtra("productId", professionInfo.getData().getRecords().get(position).getCollectionId());
                            startActivity(intent);
//
                            Intent intent = new Intent(FootTraceActivity.this, ShopDetailActivity.class);
//                            https://test.winkong.pro/platformProduct/appPlatformService/service?serviceId=117
                            intent.putExtra("weburl", Constant.service +  "serviceId=" + professionInfo.getData().getRecords().get(position).getServiceOrProductId());
//                            收藏用
                            intent.putExtra("typeId", professionInfo.getData().getRecords().get(position).getFootType());
                            startActivity(intent);
//
//
                            Intent intent = new Intent(FootTraceActivity.this, ServiceCustomDetailActivity.class);
                            intent.putExtra("position", professionInfo.getData().getRecords().get(position).getServiceOrProductId() + "");
                            startActivity(intent);
//
//                        }
//                    });


                } else if (professionInfo.getCode().equals("10000011")) {
    
    
                    Log.e("wy", "87 professionInfo: " + professionInfo.getMsg());
                    Toast.makeText(x.app(), professionInfo.getMsg(), Toast.LENGTH_SHORT).show();
                    Intent intent = new Intent(ShopCarActivity.this, LoginActivity.class);
                    startActivity(intent);

                } else {
    
    
                    Toast.makeText(x.app(), professionInfo.getMsg(), Toast.LENGTH_SHORT).show();
                }


            }

            @Override
            public void onError(Throwable ex, boolean isOnCallback) {
    
    
                Log.e("wy", "result: " + ex.getMessage());
            }

            @Override
            public void onCancelled(CancelledException cex) {
    
    
                Toast.makeText(x.app(), "cancelled", Toast.LENGTH_LONG).show();
            }

            @Override
            public void onFinished() {
    
    

            }
        });


    }
}

猜你喜欢

转载自blog.csdn.net/xiyangyang8110/article/details/124116624