Java 将图像从Gallery上载到RecyclerView GridView
我得到的结果与我的问题相同,我想与我的适配器集成,但当我将代码集成到我的适配器时,我的问题是onCreateViewHolder有问题,然后函数无法与节一起工作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
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);
}
}
}