Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/325.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 将图像从Gallery上载到RecyclerView GridView_Java_Android_Arrays_Android Recyclerview_Adapter - Fatal编程技术网

Java 将图像从Gallery上载到RecyclerView GridView

Java 将图像从Gallery上载到RecyclerView GridView,java,android,arrays,android-recyclerview,adapter,Java,Android,Arrays,Android Recyclerview,Adapter,我得到的结果与我的问题相同,我想与我的适配器集成,但当我将代码集成到我的适配器时,我的问题是onCreateViewHolder有问题,然后函数无法与节一起工作 ImageView imageView; //data array private ArrayList<Object> mDataArrayList; private Uri imageUri; private ArrayList<image_item> mData

我得到的结果与我的问题相同,我想与我的适配器集成,但当我将代码集成到我的适配器时,我的问题是onCreateViewHolder有问题,然后函数无法与节一起工作

        ImageView imageView;
    //data array
    private ArrayList<Object> mDataArrayList;
    private Uri imageUri;
    private ArrayList<image_item> mDataSet;
    private OnItemClickListener mListener;
    //context
    private Context mContext;

    //listeners
    private final ItemClickListener mItemClickListener;
    private final SectionStateChangeListener mSectionStateChangeListener;

    //view type
    private static final int VIEW_TYPE_SECTION = R.layout.layout_section;
    private static final int VIEW_TYPE_ITEM = R.layout.layout_item; //TODO : change this

    public ArrayList<image_item> getDataSet(){
        return mDataSet;
    }

    public void setmDataSet(ArrayList<image_item> mDataSet) {
        this.mDataSet = mDataSet;
    }

    public ImageView getImageView(){
        return imageView;
    }

    public void setImageView(ImageView imageView) {
        this.imageView = imageView;
    }

    public Context getContext() {
        return mContext;
    }

    public void setContext(Context mContext) {
        this.mContext = mContext;
    }

    public Uri getImageUri() {
        return imageUri;
    }

    public void setImageUri(Uri imageUri) {
        this.imageUri = imageUri;
    }

    public interface OnItemClickListener{
        void onItemClick(int position);
    }

    public void setOnItemClickListener(OnItemClickListener listener) {
        mListener = listener;
    }



    public SectionedExpandableGridAdapter(Context context, ArrayList<Object> dataArrayList,ArrayList<image_item> DataSet,
                                          final GridLayoutManager gridLayoutManager, ItemClickListener itemClickListener,
                                          SectionStateChangeListener sectionStateChangeListener) {
        mContext = context;
        mDataSet = DataSet;
        mItemClickListener = itemClickListener;
        mSectionStateChangeListener = sectionStateChangeListener;
        mDataArrayList = dataArrayList;

        gridLayoutManager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {
            @Override
            public int getSpanSize(int position) {
                return isSection(position)?gridLayoutManager.getSpanCount():1;
            }
        });
    }

    public ArrayList<image_item> DataSet(){
        return mDataSet;
    }


    private boolean isSection(int position) {
        return mDataArrayList.get(position) instanceof Section;
    }

    @Override
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View v = (LayoutInflater.from(mContext).inflate(viewType, parent, false), viewType);
        ViewHolder vh = new ViewHolder(v,(OnItemClickListener)mListener);
}

    @Override
    public void onBindViewHolder(ViewHolder holder, int position) {
        switch (holder.viewType) {
            case VIEW_TYPE_ITEM :
                final Item item = (Item) mDataArrayList.get(position);

                holder.view.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        mItemClickListener.itemClicked(item);
                    }
                });
                break;
            case VIEW_TYPE_SECTION :
                final Section section = (Section) mDataArrayList.get(position);
                holder.sectionTextView.setText(section.getName());
                holder.sectionTextView.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        mItemClickListener.itemClicked(section);
                    }
                });
                holder.sectionToggleButton.setChecked(section.isExpanded);
                holder.sectionToggleButton.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
                    @Override
                    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                        mSectionStateChangeListener.onSectionStateChanged(section, isChecked);
                    }
                });
                break;
        }
    }

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

    @Override
    public int getItemViewType(int position) {
        if (isSection(position))
            return VIEW_TYPE_SECTION;
        else return VIEW_TYPE_ITEM;
    }

    protected static class ViewHolder extends RecyclerView.ViewHolder {

        //common
        View view;
        int viewType;
        public ImageView mImageView;

        //for section
        TextView sectionTextView;
        ToggleButton sectionToggleButton;

        //for item
        TextView itemTextView;

        public ViewHolder(View view, int viewType,OnItemClickListener listener) {
            super(view);
            this.viewType = viewType;
            this.view = view;
            if (viewType == VIEW_TYPE_ITEM) {
            mImageView = (ImageView) view.findViewById(R.id.tv);
            mImageView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {

                }
            });
            } else {
                sectionTextView = (TextView) view.findViewById(R.id.text_section);
                sectionToggleButton = (ToggleButton) view.findViewById(R.id.toggle_button_section);
            }
        }
    }
ImageView;
//数据阵列
私有ArrayList mDataArrayList;
私有Uri-imageUri;
私有ArrayList数据集;
私人监听者;
//上下文
私有上下文;
//听众
私有最终项ClickListener mItemClickListener;
私有最终部分StateChangeListener mSectionStateChangeListener;
//视图类型
私有静态最终int视图类型截面=R.layout.layout截面;
私有静态最终整型视图\类型\项=R.layout.layout\项//TODO:改变这个
公共ArrayList getDataSet(){
返回mDataSet;
}
公共void setmDataSet(ArrayList mDataSet){
this.mDataSet=mDataSet;
}
公共图像视图getImageView(){
返回图像视图;
}
public void setImageView(ImageView ImageView){
this.imageView=imageView;
}
公共上下文getContext(){
返回mContext;
}
public void setContext(Context mContext){
this.mContext=mContext;
}
公共Uri getImageUri(){
返回imageUri;
}
public void setImageUri(Uri imageUri){
this.imageUri=imageUri;
}
公共接口侦听器{
无效单击(内部位置);
}
公共void setOnItemClickListener(OnItemClickListener侦听器){
mListener=监听器;
}
公共部分ExpandableGridAdapter(上下文上下文、ArrayList数据ArrayList、ArrayList数据集、,
最终GridLayoutManager GridLayoutManager,项ClickListener项ClickListener,
SectionStateChangeListener SectionStateChangeListener){
mContext=上下文;
mDataSet=数据集;
mItemClickListener=itemClickListener;
mSectionStateChangeListener=sectionStateChangeListener;
mDataArrayList=dataArrayList;
gridLayoutManager.setPansizeLookup(新的gridLayoutManager.SpanSizeLookup(){
@凌驾
公共整数getSpanSize(整数位置){
返回isSection(position)?gridLayoutManager.getSpanCount():1;
}
});
}
公共ArrayList数据集(){
返回mDataSet;
}
私有布尔isSection(int位置){
返回节的mDataArrayList.get(position)instanceof;
}
@凌驾
public ViewHolder onCreateViewHolder(视图组父级,int-viewType){
视图v=(LayoutFlater.from(mContext).充气(viewType,parent,false),viewType);
ViewHolder vh=新的ViewHolder(v,(OnItemClickListener)mListener);
}
@凌驾
公共无效onBindViewHolder(ViewHolder,int位置){
开关(保持架.视图类型){
案例视图\类型\项目:
最终项Item=(Item)mDataArrayList.get(position);
holder.view.setOnClickListener(新的view.OnClickListener(){
@凌驾
公共void onClick(视图v){
mItemClickListener.itemClicked(项目);
}
});
打破
案例视图类型章节:
final Section Section=(Section)mDataArrayList.get(position);
holder.sectionTextView.setText(section.getName());
holder.sectionTextView.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
mItemClickListener.itemClicked(节);
}
});
holder.sectionToggleButton.setChecked(section.isExpanded);
holder.sectionToggleButton.setOnCheckedChangeListener(新的CompoundButton.OnCheckedChangeListener(){
@凌驾
检查更改后的公共无效(复合按钮视图,布尔值已检查){
mSectionStateChangeListener.onSectionStateChanged(节,已检查);
}
});
打破
}
}
@凌驾
public int getItemCount(){
返回mDataArrayList.size();
}
@凌驾
public int getItemViewType(int位置){
if(I部门(职位))
返回视图类型部分;
否则返回视图\类型\项目;
}
受保护的静态类ViewHolder扩展了RecyclerView.ViewHolder{
//普通的
视图;
int viewType;
公共图像视图mImageView;
//第节
文本视图部分文本视图;
切换按钮部分切换按钮;
//对于项目
TextView项目TextView;
公共视图持有者(视图视图、int视图类型、侦听器){
超级(视图);
this.viewType=viewType;
this.view=视图;
if(视图类型==视图类型项目){
mImageView=(ImageView)view.findviewbyd(R.id.tv);
mImageView.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
}
});
}否则{
sectionTextView=(TextView)view.findViewById(R.id.text\u section);
sectionToggleButton=(ToggleButton)视图.findViewById(R.id.toggle\u button\u section);
}
}
}