问题描述
我的结果Uploading Image from Phone to RecyclerView GridView与我的问题相同,我想与我的适配器集成,但是当我将代码集成到onCreateViewHolder时遇到问题,然后该函数不适用于section时,我的问题就出现了。 / p>
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);
}
}
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)