如何从RecyclerView中自动选择第一项?

时间:2018-06-22 13:30:20

标签: android android-recyclerview

我的应用程序中有一个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(); } } } }); } } } 的第一项,但它是手动选择的。

enter image description here

3 个答案:

答案 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();