Все нижеизложенное проходит в рамках пет-проекта, ни один пользователь не пострадал.
item в RecyclerView является LinearLayout c двумя одинаковыми вложенными (include) ConstraintLayout с большим количеством view (назовем их sub_item1 и sub_item2).
В попытке обойтись без ExpandableLayout я воспользовался Group и настройками видимости.
Проблема в том, что меняя видимость Group в sub_item1 "дергается" и sub_item2
(см. гифку). К слову, если менять видимость sub_item2 - sub_item1 не двигается.
Решив что проблема в одинаковом id Group в рамках одного item, было решено слить оба sub_item в один и обозначить у каждой group свой id.
Но проблема осталась.
В чем может быть причина?
Код здесь@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main_2);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
lInf = (LayoutInflater) this.getSystemService(LAYOUT_INFLATER_SERVICE);
//RecyclerView
hSV = findViewById(R.id.hSV);
DataAdapter adapter = new DataAdapter(this);
hSV.setAdapter(adapter);
}
class DataAdapter extends RecyclerView.Adapter<DataAdapter.ViewHolder> {
private LayoutInflater layInf2;
private Context mCont;
DataAdapter(Context context) {
this.layInf2 = LayoutInflater.from(context);
mCont = context;
}
@NonNull
@Override
public DataAdapter.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View v = layInf2.inflate(R.layout.item_main, parent,false);
return new ViewHolder(v);
}
@Override
public void onBindViewHolder(@NonNull DataAdapter.ViewHolder holder, int position) {
holder.onBind(holder.ivArr);
}
@Override
public int getItemCount() {
return 12;
}
public class ViewHolder extends RecyclerView.ViewHolder {
private ImageView ivArr;
private Group gr1;
private boolean isExpand;
public ViewHolder(@NonNull View itemView) {
super(itemView);
//До слияния sub_item1 и sub_item2 в один
ivArr = itemView.findViewById(R.id.sub_item1).findViewById(R.id.IV_arrow);
gr1 = itemView.findViewById(R.id.sub_item1).findViewById(R.id.group1);
isExpand = gr1.getVisibility() == View.VISIBLE;
}
public void onBind (ImageView iv) {
iv.setOnClickListener(v -> {
if(isExpand) {
gr1.setVisibility(View.GONE);
} else {
gr1.setVisibility(View.VISIBLE);
}
isExpand = !isExpand;
});
}
}
}