如何创建自定义 GridView
How to create Custom GridView
我一直在尝试制作自定义网格视图,以便我可以操纵单个网格的外观,但我没有成功。
我能够创建一个仅使用 volley 获取图像和文本的 gridview。和
我一直在尝试操作适配器 class 并搜索教程,但不幸的是没有运气。
你们能帮我看看我该怎么做以及我做错了什么吗?提前致谢!
这是我的适配器class GridViewAdaper
:
public class GridViewAdapter extends BaseAdapter {
private ImageLoader imageLoader;
private Context context;
private ArrayList<String> images;
private ArrayList<String> names;
public GridViewAdapter (Context context, ArrayList<String> images, ArrayList<String> names){
this.context = context;
this.images = images;
this.names = names;
}
@Override
public int getCount() {
return images.size();
}
@Override
public Object getItem(int position) {
return images.get(position);
}
@Override
public long getItemId(int position) {
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater= (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView=inflater.inflate(R.layout.list_item, null);
TextView name=(TextView)convertView.findViewById(R.id.textViewName);
ImageView icon=(NetworkImageView)convertView.findViewById(R.id.imageViewHero);
imageLoader = CustomVolleyRequest.getInstance(context).getImageLoader();
imageLoader.get(images.get(position), ImageLoader.getImageListener(icon, R.mipmap.ic_launcher, android.R.drawable.ic_dialog_alert));
icon.setImageResource(images.get(position),imageLoader);
name.setText(names.get(position));
icon.setScaleType(ImageView.ScaleType.CENTER_CROP);
icon.setLayoutParams(new GridView.LayoutParams(200,200));
return convertView;
}
}
好吧,我已经解决了问题:D
适配器Class:
public class GridViewAdapter extends BaseAdapter {
private ImageLoader imageLoader;
private Context context;
private ArrayList<String> images;
private ArrayList<String> names;
public GridViewAdapter (Context context,ArrayList<String> images,
ArrayList<String> names){
this.context = context;
this.images = images;
this.names = names;
}
@Override
public int getCount() {
return images.size();
}
@Override
public Object getItem(int position) {
return images.get(position);
}
@Override
public long getItemId(int position) {
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View grid;
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
grid = inflater.inflate(R.layout.list_item, null);
TextView title = (TextView) grid.findViewById(R.id.textViewName);
NetworkImageView thumbNail = (NetworkImageView) grid.findViewById(R.id.imageViewHero);
imageLoader = CustomVolleyRequest.getInstance(context).getImageLoader();
imageLoader.get(images.get(position), ImageLoader.getImageListener(thumbNail, R.mipmap.ic_launcher, android.R.drawable.ic_dialog_alert));
title.setText(names.get(position));
thumbNail.setImageUrl(images.get(position), imageLoader);
return grid;
}
}
我一直在尝试制作自定义网格视图,以便我可以操纵单个网格的外观,但我没有成功。
我能够创建一个仅使用 volley 获取图像和文本的 gridview。和 我一直在尝试操作适配器 class 并搜索教程,但不幸的是没有运气。
你们能帮我看看我该怎么做以及我做错了什么吗?提前致谢!
这是我的适配器class GridViewAdaper
:
public class GridViewAdapter extends BaseAdapter {
private ImageLoader imageLoader;
private Context context;
private ArrayList<String> images;
private ArrayList<String> names;
public GridViewAdapter (Context context, ArrayList<String> images, ArrayList<String> names){
this.context = context;
this.images = images;
this.names = names;
}
@Override
public int getCount() {
return images.size();
}
@Override
public Object getItem(int position) {
return images.get(position);
}
@Override
public long getItemId(int position) {
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater= (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView=inflater.inflate(R.layout.list_item, null);
TextView name=(TextView)convertView.findViewById(R.id.textViewName);
ImageView icon=(NetworkImageView)convertView.findViewById(R.id.imageViewHero);
imageLoader = CustomVolleyRequest.getInstance(context).getImageLoader();
imageLoader.get(images.get(position), ImageLoader.getImageListener(icon, R.mipmap.ic_launcher, android.R.drawable.ic_dialog_alert));
icon.setImageResource(images.get(position),imageLoader);
name.setText(names.get(position));
icon.setScaleType(ImageView.ScaleType.CENTER_CROP);
icon.setLayoutParams(new GridView.LayoutParams(200,200));
return convertView;
}
}
好吧,我已经解决了问题:D
适配器Class:
public class GridViewAdapter extends BaseAdapter {
private ImageLoader imageLoader;
private Context context;
private ArrayList<String> images;
private ArrayList<String> names;
public GridViewAdapter (Context context,ArrayList<String> images,
ArrayList<String> names){
this.context = context;
this.images = images;
this.names = names;
}
@Override
public int getCount() {
return images.size();
}
@Override
public Object getItem(int position) {
return images.get(position);
}
@Override
public long getItemId(int position) {
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View grid;
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
grid = inflater.inflate(R.layout.list_item, null);
TextView title = (TextView) grid.findViewById(R.id.textViewName);
NetworkImageView thumbNail = (NetworkImageView) grid.findViewById(R.id.imageViewHero);
imageLoader = CustomVolleyRequest.getInstance(context).getImageLoader();
imageLoader.get(images.get(position), ImageLoader.getImageListener(thumbNail, R.mipmap.ic_launcher, android.R.drawable.ic_dialog_alert));
title.setText(names.get(position));
thumbNail.setImageUrl(images.get(position), imageLoader);
return grid;
}
}