Java 单击另一个recyclerview项目时,滚动至recyclerview中的特定项目

Java 单击另一个recyclerview项目时,滚动至recyclerview中的特定项目,java,android,android-recyclerview,scrollview,Java,Android,Android Recyclerview,Scrollview,我有两个回收视图,一个是水平视图,一个是垂直视图 在我的水平循环视图中,有类别,在垂直视图中,有项目列表。所以,当我点击任何类别时,我需要这样做,我的垂直回收视图滚动到那个特定的项目 将屏幕截图附加到链接中- 我尝试过使用intent,它很有效,但它开始了一项新的活动 请帮忙 Mainactivity.java package com.example.myapplication; public class MainActivity extends AppCompatActivity {

我有两个回收视图,一个是水平视图,一个是垂直视图 在我的水平循环视图中,有类别,在垂直视图中,有项目列表。所以,当我点击任何类别时,我需要这样做,我的垂直回收视图滚动到那个特定的项目 将屏幕截图附加到链接中-

我尝试过使用intent,它很有效,但它开始了一项新的活动 请帮忙

Mainactivity.java

package com.example.myapplication;

public class MainActivity extends AppCompatActivity {
    DatabaseReference reference;
    ArrayList<dish> list;
    private static final String TAG = "MainActivity";
    private ArrayList<String> mCategory = new ArrayList<>();
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        getCategory();
        menu();

    }

    private void getCategory(){
        Log.d(TAG, "Preparing Categories");
        mCategory.add("Vagetables");
        mCategory.add("Indian Bread");
        mCategory.add("Paranthas");
        mCategory.add("Starters");
        mCategory.add("Snacks");
        mCategory.add("Salad");
        mCategory.add("Noodles");
        mCategory.add("Sandwiches");
        mCategory.add("Rice");
        mCategory.add("Soups");
        mCategory.add("Beverages");
        mCategory.add("Yoghurt");
        mCategory.add("Papad");

        initRecyclerView();
    }

    private void initRecyclerView(){
        Log.d(TAG, "init RecyclerView");
        LinearLayoutManager layoutManager = new LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false);
        RecyclerView recyclerView = findViewById(R.id.recyclerView);
        recyclerView.setLayoutManager(layoutManager);
        RecyclerViewAdapter adapter = new RecyclerViewAdapter(this, mCategory);
        recyclerView.setAdapter(adapter);
    }

  private void menu(){
      list = new ArrayList<dish>();
      Log.d(TAG, "recycler MenuView : Firebase Initialized");

      FirebaseApp.initializeApp(this);
      reference = FirebaseDatabase.getInstance().getReference().child("dishes");
      reference.addValueEventListener(new ValueEventListener() {
          @Override
          public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
              Log.d(TAG, "onDataChange : called");
              for (DataSnapshot dataSnapshot1: dataSnapshot.getChildren())
              {
                  Log.d(TAG,"Adding Menu");
                  dish p = dataSnapshot1.getValue(dish.class);
                  Log.d(TAG, "called : " + p);
                  Log.d(TAG, " : " + dataSnapshot + " : " + dataSnapshot1);
                  list.add(p);
              }
              getmenu();

          }

          @Override
          public void onCancelled(@NonNull DatabaseError databaseError) {
              Toast.makeText(MainActivity.this, " Opps....Somethinf Went wrong!", Toast.LENGTH_LONG).show();
          }
      });
  }
    private void getmenu(){
        Log.d(TAG,"Setting adapter");
        LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this, RecyclerView.VERTICAL, false);
        RecyclerView recyclerMenuView = findViewById(R.id.recyclerMenuView);
        recyclerMenuView.setLayoutManager(linearLayoutManager);
        MenuAdapter adapter = new MenuAdapter(MainActivity.this, list);
        recyclerMenuView.setAdapter(adapter);
    }
}
package com.example.myapplication;
公共类MainActivity扩展了AppCompatActivity{
数据库参考;
数组列表;
私有静态最终字符串TAG=“MainActivity”;
private ArrayList mCategory=new ArrayList();
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
getCategory();
菜单();
}
私有void getCategory(){
日志d(标签“准备类别”);
McCategory.add(“流浪者”);
McCategory.add(“印度面包”);
McCategory.add(“Paranthas”);
mCategory.add(“启动器”);
McCategory.添加(“零食”);
添加(“沙拉”);
添加(“面条”);
添加(“三明治”);
添加(“大米”);
添加(“汤”);
McCategory.添加(“饮料”);
添加(“酸奶”);
mCategory.add(“Papad”);
initRecyclerView();
}
私有void initRecyclerView(){
Log.d(标记为“init RecyclerView”);
LinearLayoutManager layoutManager=新的LinearLayoutManager(this,LinearLayoutManager.HORIZONTAL,false);
RecyclerView RecyclerView=findViewById(R.id.RecyclerView);
recyclerView.setLayoutManager(layoutManager);
RecycleServiceAdapter=新的RecycleServiceAdapter(此,McCategory);
recyclerView.setAdapter(适配器);
}
私有无效菜单(){
列表=新的ArrayList();
Log.d(标记“recycler MenuView:Firebase已初始化”);
FirebaseApp.initializeApp(本);
reference=FirebaseDatabase.getInstance().getReference().child(“碟子”);
addValueEventListener(新的ValueEventListener(){
@凌驾
public void onDataChange(@NonNull DataSnapshot DataSnapshot){
Log.d(标记“onDataChange:called”);
对于(DataSnapshot dataSnapshot1:DataSnapshot.getChildren())
{
Log.d(标签“添加菜单”);
dish p=dataSnapshot1.getValue(dish.class);
Log.d(标签,称为“+p”);
Log.d(标记“:”+dataSnapshot+”:“+dataSnapshot1);
增加(p);
}
getmenu();
}
@凌驾
已取消的公共void(@NonNull DatabaseError DatabaseError){
Toast.makeText(MainActivity.this,“Opps…Somethinf出错了!”,Toast.LENGTH\u LONG.show();
}
});
}
私有void getmenu(){
Log.d(标记“设置适配器”);
LinearLayoutManager LinearLayoutManager=新的LinearLayoutManager(this,RecyclerView.VERTICAL,false);
RecyclerView RecyclerManuView=findViewById(R.id.RecyclerManuView);
setLayoutManager(linearLayoutManager);
MenuAdapter=新建MenuAdapter(MainActivity.this,列表);
setAdapter(适配器);
}
}
RecycleWebAdapter.java-类别RecycleWebView(单击此项)

package com.example.myapplication;
公共类RecycleServiceAdapter扩展了RecyclerView.Adapter{
@非空
私有静态最终字符串TAG=“RecycleServiceAdapter”;
private ArrayList mCategory=new ArrayList();
私人语境;
公共RecycleServiceAdapter(上下文、ArrayList类别){
this.context=上下文;
mCategory=类别;
}
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent,int viewType){
Log.d(标记“On Create View Holder:called”);
View View=LayoutInflater.from(parent.getContext()).flate(R.layout.layout\u listitem,parent,false);
返回新的ViewHolder(视图);
}
@凌驾
public void onBindViewHolder(@NonNull ViewHolder,final int位置){
Log.d(标记“OnBindViewHolder:called”);
holder.category.setText(mCategory.get(position));
holder.category.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
Log.d(标记“onClick:Clicked on Text”+mCategory.get(position));
Toast.makeText(context,mCategory.get(position),Toast.LENGTH_SHORT.show();
}
});
}
@凌驾
public int getItemCount(){
返回mCategory.size();
}
公共静态类ViewHolder扩展了RecyclerView.ViewHolder{
文本视图类别;
公共视图持有者(@NonNull View itemView){
超级(项目视图);
category=itemView.findviewbyd(R.id.category);
}
}
}
MenuAdapter.java-从此回收器视图中滚动项目

package com.example.myapplication;

public class MenuAdapter extends RecyclerView.Adapter<MenuAdapter.menuViewHolder>{

    Context context;
    ArrayList<dish> dishes;

    public MenuAdapter(Context c , ArrayList<dish> p)
    {
        context = c;
        dishes = p;
    }

    @NonNull
    @Override
    public menuViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        Log.d(TAG ,"On Create View Holder: called");
        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.cardview, parent, false);
        return new MenuAdapter.menuViewHolder(view);
    }

    @Override
    public void onBindViewHolder(@NonNull menuViewHolder holder, final int position) {
        holder.dishname.setText(dishes.get(position).getDishname());
        holder.dishrate.setText(dishes.get(position).getDishrate());

Picasso.get().load(dishes.get(position).getDishImage()).placeholder(R.drawable.ic_launcher_background).into(holder.dishImage);

        boolean flag = dishes.get(position).getPermission();
        if (flag){
            Log.d(TAG," recommended : " + dishes.get(position).getDishname());
            holder.recommended.setVisibility(View.VISIBLE);
        }
        else{
            holder.recommended.setVisibility(View.INVISIBLE);
        }
    }

    @Override
    public int getItemCount() {
        return dishes.size();
    }

    class menuViewHolder extends RecyclerView.ViewHolder {
        TextView dishname, dishrate, recommended;
        ImageView dishImage;
           public menuViewHolder(@NonNull View itemView)
            {
                super(itemView);
                dishname = (TextView) itemView.findViewById(R.id.dishname);
                dishrate = (TextView) itemView.findViewById(R.id.dishrate);
                dishImage = (ImageView) itemView.findViewById(R.id.dishImage);
                recommended = (TextView) itemView.findViewById(R.id.recommended);
           }
        }
}
package com.example.myapplication;
公共类MenuAdapter扩展了RecyclerView.Adapter{
语境;
阵列式菜肴;
公共菜单适配器(上下文c,数组列表p)
{
上下文=c;
盘子=p;
}
@非空
@凌驾
public menuViewHolder onCreateViewHolder(@NonNull ViewGroup父级,int viewType){
Log.d(标记“On Create View Holder:called”);
查看视图=LayoutFlater.from(parent.getContext()).flate(R.layout.cardview,parent,false);
返回新的MenuAdapter.menuViewHolder(视图);
}
@凌驾
public void onBindViewHolder(@NonNull menuViewHolder holder,final int位置){
holder.dishname.setText(disks.get(position.getDishname());
餐具架.餐具架.餐具架
package com.example.myapplication;

public class MenuAdapter extends RecyclerView.Adapter<MenuAdapter.menuViewHolder>{

    Context context;
    ArrayList<dish> dishes;

    public MenuAdapter(Context c , ArrayList<dish> p)
    {
        context = c;
        dishes = p;
    }

    @NonNull
    @Override
    public menuViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        Log.d(TAG ,"On Create View Holder: called");
        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.cardview, parent, false);
        return new MenuAdapter.menuViewHolder(view);
    }

    @Override
    public void onBindViewHolder(@NonNull menuViewHolder holder, final int position) {
        holder.dishname.setText(dishes.get(position).getDishname());
        holder.dishrate.setText(dishes.get(position).getDishrate());

Picasso.get().load(dishes.get(position).getDishImage()).placeholder(R.drawable.ic_launcher_background).into(holder.dishImage);

        boolean flag = dishes.get(position).getPermission();
        if (flag){
            Log.d(TAG," recommended : " + dishes.get(position).getDishname());
            holder.recommended.setVisibility(View.VISIBLE);
        }
        else{
            holder.recommended.setVisibility(View.INVISIBLE);
        }
    }

    @Override
    public int getItemCount() {
        return dishes.size();
    }

    class menuViewHolder extends RecyclerView.ViewHolder {
        TextView dishname, dishrate, recommended;
        ImageView dishImage;
           public menuViewHolder(@NonNull View itemView)
            {
                super(itemView);
                dishname = (TextView) itemView.findViewById(R.id.dishname);
                dishrate = (TextView) itemView.findViewById(R.id.dishrate);
                dishImage = (ImageView) itemView.findViewById(R.id.dishImage);
                recommended = (TextView) itemView.findViewById(R.id.recommended);
           }
        }
}