activity:
int newPos = -1;
String title = "请选择你的团队";
private void showDialog(List<GroupBean> data) {
AlertDialog.Builder builder = new AlertDialog.Builder(getContext());
View view = LayoutInflater.from(getContext()).inflate(R.layout.alert_dialog_team, null);
builder.setView(view);
//点击外部不取消
builder.setCancelable(false);
builder.create();
final AlertDialog dialog = builder.show();
//去掉背景色
dialog.getWindow().getDecorView().setBackground(null);
RecyclerView recycler = view.findViewById(R.id.recycler);
TextView text = view.findViewById(R.id.text);
//第二次打开赋值
text.setText(title);
if (newPos >= 0) data.get(newPos).ifChoice = true;
//适配器配置
TeamDialogAdapter dialogAdapter = new TeamDialogAdapter(data);
recycler.setLayoutManager(new LinearLayoutManager(getContext()));
recycler.setAdapter(dialogAdapter);
//设置最大高度
ViewGroup.LayoutParams lp = recycler.getLayoutParams();
lp.height = DensityUtil.dip2px(getContext(),48 * 4);
recycler.setLayoutParams(lp);
//列表点击事件
dialogAdapter.setClick((name, pos) -> {
title = "当前团队:" + name;
//判断是否是同一层带点击
if (newPos != pos) {
//判断是否第一次点击
if (newPos >= 0) {
//取消放大效果
data.get(newPos).ifChoice = false;
//局部刷新
dialogAdapter.notifyItemChanged(newPos);
}
//开启放大效果
data.get(pos).ifChoice = true;
//局部刷新
dialogAdapter.notifyItemChanged(pos);
newPos = pos;
}
text.setText(title);
});
view.findViewById(R.id.btnOk).setOnClickListener(v -> {
postEvent();
dialog.dismiss();
});
}
Adapter:
@Override
public void onBindViewHolder(@NonNull TeamDialogAdapter.VH holder, int position) {
int poss = position;
holder.text.setText(data.get(poss).getName());
holder.itemView.setOnClickListener(v -> {
if (mClick != null) {
mClick.customClick(data.get(poss).getName(),poss);
}
});
if (data.get(poss).ifChoice) {
//判断是否点击的是同一个itemView
if (pos != poss) {
//放大动画
ScaleAnimation animation =new ScaleAnimation(1.0f, 1.3f, 1.0f, 1.3f,
Animation.RELATIVE_TO_SELF, 0.01f, Animation.RELATIVE_TO_SELF, 0.5f);
//持续时间
animation.setDuration(1);
//动画结束是否保持结束状态
animation.setFillAfter(true);
holder.itemView.setAnimation(animation);
}
pos = poss;
} else {
//取消动画
holder.itemView.clearAnimation();
}
}
public interface customClick{
void customClick(String name, int pos);
}