我想用一个GridView的布局,使网格布局的每一个项目都有自己的ListView。我一直在寻找代码示例,但我还没有找到任何代码。我应该为GridView和ListView使用不同的适配器类吗? 提前谢谢!的ListView里面的GridView
编辑:我已经创建了一个显示所有的一些瓷砖的GridView中,我希望每一个网格项目列入清单,让我增加了一个ListView到GridView项目的布局。不幸的是,我有问题连接到适配器的列表视图。
这是适配器在GridView的:
public class MainViewAdapter extends ArrayAdapter<Category> {
private Context mContext;
private int layoutResourceId;
private ArrayList<Category> mGridData = new ArrayList<Category>();
ArrayAdapter adapter;
public MainViewAdapter(Context mContext, int layoutResourceId, ArrayList<Category> mGridData) {
super(mContext, layoutResourceId, mGridData);
this.layoutResourceId = layoutResourceId;
this.mContext = mContext;
this.mGridData = mGridData;
}
public void setGridData(ArrayList<Category> mGridData) {
this.mGridData = mGridData;
notifyDataSetChanged();
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View row = convertView;
ViewHolder holder;
String imageUrl;
if (row == null) {
LayoutInflater inflater = ((Activity) mContext).getLayoutInflater();
row = inflater.inflate(layoutResourceId, parent, false);
holder = new ViewHolder();
holder.SubListView = (ListView) row.findViewById(R.id.SubList);
holder.titleTextView = (TextView) row.findViewById(R.id.category_title);
holder.simpleDraweeView = (SimpleDraweeView) row.findViewById(R.id.category_image);
row.setTag(holder);
} else {
holder = (ViewHolder) row.getTag();
}
Category category = mGridData.get(position);
Log.i("position", "" + position);
holder.titleTextView.setText(Html.fromHtml(category.getTitle()));
imageUrl = category.getImage();
Log.i("image url",imageUrl);
Uri imageUri = Uri.parse(imageUrl);
holder.simpleDraweeView.setImageURI(imageUri);
List SubCategories = category.getSubCateg();
Log.i("@MainViewAdapter - SubCategories", category.getSubCateg().toString());
//list SubCategories to ArrayList
ArrayList<SubCategory> listOfSub = new ArrayList<>(SubCategories.size());
listOfSub.addAll(SubCategories);
Log.i("listOfSub",listOfSub.toString());
//ArrayList to ListView
holder.SubListView.setAdapter(adapter);
return row;
}
static class ViewHolder {
TextView titleTextView;
SimpleDraweeView simpleDraweeView;
ListView SubListView;
}}
这里是适配器列表视图的:
public class SubListAdapter extends ArrayAdapter<SubCategory> {
private int layoutResourceId;
private ArrayList<SubCategory> mSubGridData = new ArrayList<SubCategory>();
ArrayAdapter adapter;
private final Context mContext;
public SubListAdapter(Context mContext, int layoutResourceId, ArrayList<SubCategory> mSubGridData) {
super(mContext, R.layout.subcategory_item, mSubGridData);
this.layoutResourceId = layoutResourceId;
this.mContext = mContext;
this.mSubGridData = mSubGridData;
}
public void setSubGridData(ArrayList<SubCategory> mSubGridData) {
this.mSubGridData = mSubGridData;
notifyDataSetChanged();
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View row = convertView;
SubListAdapter.ViewHolder holder;
String imageUrl;
if (row == null) {
LayoutInflater inflater = ((Activity) mContext).getLayoutInflater();
row = inflater.inflate(layoutResourceId, parent, false);
holder = new ViewHolder();
holder.SubTitleTextView = (TextView) row.findViewById(R.id.subCatItemTitle);
row.setTag(holder);
} else {
holder = (SubListAdapter.ViewHolder) row.getTag();
return rowView;
}
static class ViewHolder {
TextView SubTitleTextView;
ListView SubListView;
}}
我有一些问题,第二个适配器。
你可以只尝试它,如果它不工作,请咨询详细的问题与你做了什么,一个清楚地说明什么不起作用。是的,您需要为每个列表/网格添加一个适配器。 –