在android上定制网格状布局-使用不同的布局对前三个元素进行充气
我正在尝试制作一个具有gridView特性(适配器、scrolable…)的布局,但也能够放置不同于其他元素的元素。应该是这样的 单击“添加”按钮时,应显示另外两个元素,如下所示: 我已经尝试了很多东西,所以任何想法都是值得赞赏的 编辑 目前,我有一个带有复选标记的自定义分幅的gridview。我可以写一些代码,但不是很多,因为我的合同很紧在android上定制网格状布局-使用不同的布局对前三个元素进行充气,android,layout,grid,Android,Layout,Grid,我正在尝试制作一个具有gridView特性(适配器、scrolable…)的布局,但也能够放置不同于其他元素的元素。应该是这样的 单击“添加”按钮时,应显示另外两个元素,如下所示: 我已经尝试了很多东西,所以任何想法都是值得赞赏的 编辑 目前,我有一个带有复选标记的自定义分幅的gridview。我可以写一些代码,但不是很多,因为我的合同很紧 public class ItemsGridAdapter extends BaseAdapter { List<Items> I
public class ItemsGridAdapter extends BaseAdapter {
List<Items> Items;
Items oneItem;
Context ctx;
DisplayImage displayImageTask;
public ItemsGridAdapter(Context ctx, List<Items> Itemslist){
this.ctx = ctx;
this.Items = Itemslist;
oneItem = new Items();
}
@Override
public int getCount() {
return Items.size();
}
@Override
public Object getItem(int position) {
return Items.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View row = convertView;
ViewHolder holder;
if(row == null) {
LayoutInflater layoutInflater = (LayoutInflater) ctx.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
row = layoutInflater.inflate(R.layout.Items, parent, false);
holder = new ViewHolder(row);
row.setTag(holder);
}
else {
holder = (ViewHolder) row.getTag();
}
oneItem = Items.get(position);
holder.ItemsId.setText(String.valueOf(oneItem.getItemsId()));
holder.ItemsName.setText(oneItem.getName());
displayImageTask = (DisplayImage) new DisplayImage(holder.ItemsPic).execute(oneItem.getItems_icon());
return row;
}
class ViewHolder
{
TextView ItemsName;
TextView ItemsId;
ImageView ItemsPic;
ViewHolder(View v)
{
ItemsName = (TextView) v.findViewById(R.id.txtItemsName);
ItemsId = (TextView) v.findViewById(R.id.txtItemsId);
ItemsPic = (ImageView) v.findViewById(R.id.ItemsTile);
}
}
}
公共类ItemsGridAdapter扩展BaseAdapter{
清单项目;
项目一个项目;
上下文ctx;
显示图像显示图像任务;
公共项GridAdapter(上下文ctx,列表项列表){
this.ctx=ctx;
this.Items=Itemslist;
oneItem=新项目();
}
@凌驾
public int getCount(){
返回Items.size();
}
@凌驾
公共对象getItem(int位置){
返回项目。获取(位置);
}
@凌驾
公共长getItemId(int位置){
返回位置;
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
视图行=转换视图;
视窗座;
if(行==null){
LayoutInflater LayoutInflater=(LayoutInflater)ctx.getSystemService(Context.LAYOUT\u INFLATER\u SERVICE);
行=布局更平坦。充气(R.layout.Items,父项,false);
支架=新的视图支架(行);
row.setTag(支架);
}
否则{
holder=(ViewHolder)row.getTag();
}
oneItem=Items.get(位置);
holder.ItemsId.setText(String.valueOf(oneItem.getItemsId());
holder.ItemsName.setText(oneItem.getName());
displayImageTask=(DisplayImage)新建DisplayImage(holder.itemspc).execute(oneItem.getItems_icon());
返回行;
}
类视图持有者
{
文本视图项目名称;
TextView项目SID;
ImageView项目SPIC;
视图支架(视图v)
{
ItemsName=(TextView)v.findViewById(R.id.txtItemsName);
ItemsId=(TextView)v.findViewById(R.id.txtItemsId);
ItemsPic=(ImageView)v.findviewbyd(R.id.ItemsTile);
}
}
}
此外,我还有一个单项目布局,它是一个方框,右上角有一个复选标记,如图片所示,这是我的gridView:
<GridView
android:padding="10dp"
android:id="@+id/itemGrid"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:numColumns="3"
android:verticalSpacing="0dp"
android:horizontalSpacing="0dp"
android:gravity="center"
android:stretchMode="none"
android:listSelector="@android:color/transparent"
android:columnWidth="@dimen/item_tile_dimen"
>
</GridView>
实现了临时解决方案。我正在加载带有对象列表(
list
)的网格视图,其中包含两种类型的对象,一种用于按钮,另一种用于内容。主要的逻辑是在Kyogs中找到的
糟糕的是,当我必须隐藏或显示项目时,单击按钮后,我会用新数据重新加载gridview。我将在将来对其进行优化。您尝试过什么?请发布一些代码,这样就可以使用了。