Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/396.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在Android上实现父子循环视图_Java_Android_Android Recyclerview - Fatal编程技术网

Java 如何在Android上实现父子循环视图

Java 如何在Android上实现父子循环视图,java,android,android-recyclerview,Java,Android,Android Recyclerview,你能给我一些关于亲子循环的参考资料吗?我已经成功地进行了parent Recycleview,但当我从parent单击项目时,我坚持通过child Recycleview 注:我正在使用虚拟数据 这是我想要创建的recyclerview的示例: 这是我的密码 RecycleParentAdapter.java public class RecycleParentMenuAdapter extends RecyclerView.Adapter<RecycleParentMenuAdapte

你能给我一些关于亲子循环的参考资料吗?我已经成功地进行了
parent Recycleview
,但当我从
parent
单击项目时,我坚持通过
child Recycleview

注:我正在使用虚拟数据

这是我想要创建的recyclerview的示例:

这是我的密码

RecycleParentAdapter.java

public class RecycleParentMenuAdapter extends RecyclerView.Adapter<RecycleParentMenuAdapter.ViewHolder>{

    private ArrayList<Store> mData;
    private LayoutInflater mInflater;
    private ItemClickListener mClickListener;

    public RecycleParentMenuAdapter(ArrayList<Store> mData, Context context) {
        this.mData = mData;
        this.mInflater = LayoutInflater.from(context);
    }

    @NonNull
    @Override
    public ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
        View view = mInflater.from(viewGroup.getContext()).inflate(R.layout.list_store_lists, viewGroup, false);
        return new ViewHolder(view);
    }

    @Override
    public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
        holder.storeName.setText(mData.get(position).getName());
//        holder.storeImage.setImageURI(mData.get(position).getImage());
    }

    @Override
    public int getItemCount() {
        return (mData != null) ? mData.size() : 0;
    }

    public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
        private CircleImageView storeImage;
        private TextView storeName;

        ViewHolder(View itemView) {
            super(itemView);
            storeImage = itemView.findViewById(R.id.ivListStoreImage);
            storeName = itemView.findViewById(R.id.tvListStoreName);
            itemView.setOnClickListener(this);
        }

        @Override
        public void onClick(View view) {
            if (mClickListener != null) {
                mClickListener.onItemClick(view, getAdapterPosition());
            }
        }
    }

    public int getItem(int id) {
        return (mData != null) ? mData.size() : 0;
    }

    // allows clicks events to be caught
    public void setClickListener(ItemClickListener itemClickListener) {
        this.mClickListener = itemClickListener;
    }

    // parent activity will implement this method to respond to click events
    public interface ItemClickListener {
        void onItemClick(View view, int position);
    }

}

public class RecycleChildMenuAdapter extends RecyclerView.Adapter<RecycleChildMenuAdapter.ViewHolder> {

//    private String[] mData;
    private ArrayList<Menu> mData;
    private LayoutInflater mInflater;
    private ItemClickListener mClickListener;

    public RecycleChildMenuAdapter(ArrayList<Menu> mData, Context context) {
        this.mData = mData;
        this.mInflater = LayoutInflater.from(context);
    }

    @NonNull
    @Override
    public ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
        View view = mInflater.from(viewGroup.getContext()).inflate(R.layout.list_menu_lists, viewGroup, false);
        return new ViewHolder(view);
    }

    @Override
    public void onBindViewHolder(@NonNull ViewHolder viewHolder, int i) {
//        viewHolder.myTextView.setText(mData.get(i).get);
//        viewHolder.id.setText((int) 12l);
        viewHolder.menuName.setText(mData.get(i).getName());
//        viewHolder.menuImage.setText(mData.get(i).getImage());
    }

    @Override
    public int getItemCount() {
        return (mData != null) ? mData.size() : 0;
    }

    public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
        private TextView menuName;
        private CircleImageView menuImage;
        private TextView id;

        ViewHolder(View itemView) {
            super(itemView);
            menuName = itemView.findViewById(R.id.tvListMenuName);
            menuImage = itemView.findViewById(R.id.ivListMenuImage);
//            myTextView = itemView.findViewById(R.id.info_text);
            itemView.setOnClickListener(this);
        }

        @Override
        public void onClick(View view) {
            if (mClickListener != null) {
                mClickListener.onItemClick(view, getAdapterPosition());
            }
        }
    }

    public int getItem(int id) {
        return (mData != null) ? mData.size() : 0;
    }

    // allows clicks events to be caught
    public void setClickListener(ItemClickListener itemClickListener) {
        this.mClickListener = itemClickListener;
    }

    // parent activity will implement this method to respond to click events
    public interface ItemClickListener {
        void onItemClick(View view, int position);
    }

}
MenuModel.java

public class Store {

    private String id;
    private String name;
    private String image;

    public Store(String id, String name, String image) {
        this.id = id;
        this.name = name;
        this.image = image;
    }

    public Store() {
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getImage() {
        return image;
    }

    public void setImage(String image) {
        this.image = image;
    }
}

package com.snoci.resto.util.model;
public class Menu {

    private String id;
    private String name;
    private String desc;
    private String image;
    private Number price;
    private String storeId;

    public Menu(String id, String name, String desc, String image, Number price, String storeId) {
        this.id = id;
        this.name = name;
        this.desc = desc;
        this.image = image;
        this.price = price;
        this.storeId = storeId;
    }

    public Menu() {
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getDesc() {
        return desc;
    }

    public void setDesc(String desc) {
        this.desc = desc;
    }

    public String getImage() {
        return image;
    }

    public void setImage(String image) {
        this.image = image;
    }

    public Number getPrice() {
        return price;
    }

    public void setPrice(Number price) {
        this.price = price;
    }

    public String getStoreId() {
        return storeId;
    }

    public void setStoreId(String storeId) {
        this.storeId = storeId;
    }
}

感谢您的帮助

您需要在RecycleParentAdapter.java的onBindViewHolder中填充RecycleChildAdapter.java 比如:

以及:


在父回收器项目布局中创建一个回收器视图,并从父回收器的onBind方法进行设置recycler@VipulChauhan对不起,先生,您能详细解释一下吗。因为我真的很困惑。谢谢
package com.snoci.resto.util.model;
public class Menu {

    private String id;
    private String name;
    private String desc;
    private String image;
    private Number price;
    private String storeId;

    public Menu(String id, String name, String desc, String image, Number price, String storeId) {
        this.id = id;
        this.name = name;
        this.desc = desc;
        this.image = image;
        this.price = price;
        this.storeId = storeId;
    }

    public Menu() {
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getDesc() {
        return desc;
    }

    public void setDesc(String desc) {
        this.desc = desc;
    }

    public String getImage() {
        return image;
    }

    public void setImage(String image) {
        this.image = image;
    }

    public Number getPrice() {
        return price;
    }

    public void setPrice(Number price) {
        this.price = price;
    }

    public String getStoreId() {
        return storeId;
    }

    public void setStoreId(String storeId) {
        this.storeId = storeId;
    }
}
  public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
        private CircleImageView storeImage;
        private TextView storeName;
        public RecyclerView recycler_view_child;

        ViewHolder(View itemView) {
            super(itemView);
            storeImage = itemView.findViewById(R.id.ivListStoreImage);
            storeName = itemView.findViewById(R.id.tvListStoreName);
            recycler_view_child = view.findViewById(R.id.recyclerchild);
            itemView.setOnClickListener(this);
        }
public class RecycleParentMenuAdapter extends RecyclerView.Adapter<RecycleParentMenuAdapter.ViewHolder>{

    private ArrayList<Store> mData;
    private LayoutInflater mInflater;
    private ItemClickListener mClickListener;
    public RecycleChildAdapter adapter;
@Override
    public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
        holder.storeName.setText(mData.get(position).getName());
//      holder.storeImage.setImageURI(mData.get(position).getImage());
        LinearLayoutManager manager=new LinearLayoutManager(context);
        manager.setOrientation(LinearLayoutManager.HORIZONTAL);
        holder.recycler_view_child.setLayoutManager(manager);
        adapter = new ChildAdapter(yourdatalist, context);
        holder.recycler_view_child.setAdapter(adapter);
    }