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() {

}
});


}
}