我的应用程序中有一个recyclerView
,其中包含一个菜单列表,当我按其中一个菜单时,如果将更改另一个recyclerView
中的项目,但是当我打开活动时,{{1}中的任何人都没有},然后选择菜单。
所以问题是我如何打开活动并找到所选recyclerView
的第一项?
我试图模拟Handler的点击,但这使我的应用变慢了。
这是我的适配器中的代码:
recyclerView
这是我的活动的屏幕截图,您可以看到“ CICCIO”是我的public class RecyclerViewMenu extends RecyclerView.Adapter<RecyclerViewMenu.MenuViewHolder> {
private ArrayList<MenuConstructor> menuConstructors;
private OnItemClickListener onItemClickListener;
private int selected_position = -1;
public interface OnItemClickListener {
void onItemClick(int position);
}
public void setOnItemClickListener(OnItemClickListener listener){
onItemClickListener = listener;
}
@NonNull
@Override
public MenuViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.menucard,parent,false);
return new MenuViewHolder(v, onItemClickListener);
}
RecyclerViewMenu(ArrayList<MenuConstructor> menuList){
menuConstructors = menuList;
}
@Override
public void onBindViewHolder(@NonNull final MenuViewHolder holder, final int position) {
MenuConstructor currentItem = menuConstructors.get(position);
if (selected_position == position) {
holder.itemView.setBackgroundColor(Color.parseColor("#2e7d32"));
} else {
holder.itemView.setBackgroundColor(Color.parseColor(currentItem.getSfondoColor()));
}
holder.textView.setText(currentItem.getDesk());
holder.textView.setTextColor(Color.parseColor(currentItem.getFontColor()));
}
@Override
public int getItemCount() {
return menuConstructors.size();
}
public class MenuViewHolder extends RecyclerView.ViewHolder {
public TextView textView;
MenuViewHolder(View itemView, final OnItemClickListener listener) {
super(itemView);
textView = itemView.findViewById(R.id.ButtonName);
itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(listener != null){
int position = getAdapterPosition();
if (position != RecyclerView.NO_POSITION){
listener.onItemClick(position);
selected_position = position;
notifyDataSetChanged();
}
}
}
});
}
}
}
的第一项,但它是手动选择的。
答案 0 :(得分:1)
您是否在活动中尝试过此操作?
recyclerView.findViewHolderForAdapterPosition(0).itemView.performClick()
答案 1 :(得分:1)
变量selected_position
应该在Utils类中是公共的,然后在onCreate中设置selected_position = 0
:
public class Utils {
public static final int selected_position = -1;
}
然后在onCreate Utils.selected_position = 0;
中使用它
并在onBindViewHolder if (position == Utils.selected_position)
您当然必须删除以下行:private int selected_position = -1;
答案 2 :(得分:0)
嗨,您可以使用performClick()函数。
if(positon == 0)
holder.itemView.performClick();