具有 3 列的 ListView - Android
ListView with 3 columns - Android
我想创建包含 3 列的 ListView
(所有 3 列都相同)。所以一列是一个 ImageView
。为了填充 ListView
,我有一个包含图像的数组。
设计应该是这样的:
要填充 ListView,我需要自定义适配器和自定义布局。布局只有 3 张图像 id-s:
ivImage1
、ivImage2
、ivImage3
我的自定义适配器:
public class Adapter extends BaseAdapter {
private int[] gallery = {
R.drawable.cat_321_sofa,
R.drawable.cat_corner_sofa,
R.drawable.cat_beds,
R.drawable.cat_arm_chairs,
R.drawable.cat_puff,
R.drawable.cat_coffe_table,
R.drawable.cat_day_night,
};
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View row;
if (convertView == null) {
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
row = inflater.inflate(R.layout.one_gallery_layout, parent, false);
} else {
row = convertView;
}
ImageView ivImage1 = (ImageView) row.findViewById(R.id.ivImage1);
ImageView ivImage2 = (ImageView) row.findViewById(R.id.ivImage2);
ImageView ivImage3 = (ImageView) row.findViewById(R.id.ivImage3);
ivImage1.setImageResource(); ??????
ivImage2.setImageResource(); ??????
ivImage3.setImageResource(); ??????
return row;
}
@Override
public int getCount() {
return ????????????
}
@Override
public Object getItem(int position) {
return 0;
}
@Override
public long getItemId(int position) {
return 0;
}
}
所以问题是ListView
的大小,getCount()的return; ,并在每个 ImageView
上放置图像
我该怎么做,或者这个问题有一些其他的解决方案.....
您将需要使用 GridView, or RecyclerView。这两个组件都允许您创建多个列,这正是您所需要的。我建议使用 RecyclerView,这是未来支持的控件。
标准 ListView 仅限于单列。
我想创建包含 3 列的 ListView
(所有 3 列都相同)。所以一列是一个 ImageView
。为了填充 ListView
,我有一个包含图像的数组。
设计应该是这样的:
要填充 ListView,我需要自定义适配器和自定义布局。布局只有 3 张图像 id-s:
ivImage1
、ivImage2
、ivImage3
我的自定义适配器:
public class Adapter extends BaseAdapter {
private int[] gallery = {
R.drawable.cat_321_sofa,
R.drawable.cat_corner_sofa,
R.drawable.cat_beds,
R.drawable.cat_arm_chairs,
R.drawable.cat_puff,
R.drawable.cat_coffe_table,
R.drawable.cat_day_night,
};
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View row;
if (convertView == null) {
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
row = inflater.inflate(R.layout.one_gallery_layout, parent, false);
} else {
row = convertView;
}
ImageView ivImage1 = (ImageView) row.findViewById(R.id.ivImage1);
ImageView ivImage2 = (ImageView) row.findViewById(R.id.ivImage2);
ImageView ivImage3 = (ImageView) row.findViewById(R.id.ivImage3);
ivImage1.setImageResource(); ??????
ivImage2.setImageResource(); ??????
ivImage3.setImageResource(); ??????
return row;
}
@Override
public int getCount() {
return ????????????
}
@Override
public Object getItem(int position) {
return 0;
}
@Override
public long getItemId(int position) {
return 0;
}
}
所以问题是ListView
的大小,getCount()的return; ,并在每个 ImageView
我该怎么做,或者这个问题有一些其他的解决方案.....
您将需要使用 GridView, or RecyclerView。这两个组件都允许您创建多个列,这正是您所需要的。我建议使用 RecyclerView,这是未来支持的控件。
标准 ListView 仅限于单列。