【发布时间】:2020-10-03 23:42:07
【问题描述】:
我已经在 ArrayList 中设置了图像源,但在 Gridview 中没有显示任何内容,知道这个 Arraylist.add(new Item( 0,R.drawable.add)) 有什么问题或有什么问题; 我已经试过了
https://www.androidhive.info/2016/05/android-working-with-card-view-and-recycler-view/
Android Grid View with Image and Text
项目
public class Item {
private int id;
private int Thumbnail;
public Item(int id,int thumbnail) {
this.id = id;
this.Thumbnail = thumbnail;
}
public void setThumbnail(int thumbnail) {
Thumbnail = thumbnail;
}
public int getThumbnail() {
return Thumbnail;
}
public void setId(int id) {
this.id = id;
}
public int getId() {
return id;
}
}
网格适配器
//data array
public ArrayList<Object> mDataArrayList;
//context
private final 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 SectionedExpandableGridAdapter(Context context, ArrayList<Object> dataArrayList,
final GridLayoutManager gridLayoutManager, ItemClickListener itemClickListener,
SectionStateChangeListener sectionStateChangeListener) {
mContext = context;
mItemClickListener = itemClickListener;
mSectionStateChangeListener = sectionStateChangeListener;
mDataArrayList = dataArrayList;
gridLayoutManager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {
@Override
public int getSpanSize(int position) {
return isSection(position)?gridLayoutManager.getSpanCount():1;
}
});
}
private boolean isSection(int position) {
return mDataArrayList.get(position) instanceof Section;
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
return new ViewHolder(LayoutInflater.from(mContext).inflate(viewType, parent, false), viewType);
}
@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;
//for section
TextView sectionTextView;
ToggleButton sectionToggleButton;
//for item
TextView itemTextView;
ImageView imageView;
public ViewHolder(View view, int viewType) {
super(view);
this.viewType = viewType;
this.view = view;
if (viewType == VIEW_TYPE_ITEM) {
imageView =(ImageView ) view.findViewById(R.id.the_grid_image_preview);
} else {
sectionTextView = (TextView) view.findViewById(R.id.text_section);
sectionToggleButton = (ToggleButton) view.findViewById(R.id.toggle_button_section);
}
}
}
【问题讨论】:
标签: java android arrays arraylist