2012-09-04 41 views
0

在我的应用程序中,我必须显示一个ListView,listview的每一行应该保存一个GridLayout。而网格布局的项目则通过适配器类动态添加。Android:将自定义视图添加到空GridLayout

@Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     final ViewHolder holder; 

     // if it's not create convertView yet create new one and consume it 
     if (convertView == null) { 
      // instantiate convertView using our list_item 
      convertView = inflater.inflate(R.layout.order_grid_list_view, null); 
      // get new ViewHolder 
      holder = new ViewHolder(); 
      holder.order_row = (GridLayout) convertView 
        .findViewById(R.id.order_row); 
      holder.order_no = (TextView) convertView 
        .findViewById(R.id.order_no); 
      holder.order_date = (TextView) convertView 
        .findViewById(R.id.order_date); 
      holder.complete = (Button) convertView 
        .findViewById(R.id.order_btn); 
     } 
     // if it's exist convertView then consume it 
     else { 
      Log.d("ListAdaptor", "convertView is not null"); 
      holder = (ViewHolder) convertView.getTag(); 
     } 

     orderno_ = data.get(position).getNo() + ""; 
     // set data to holder 
     holder.order_no.setText(data.get(position).getNo() + ""); 
     holder.order_date.setText(data.get(position).getDateTime()); 
     if (mode.equalsIgnoreCase("Y")) { 
      holder.complete.setText("InComplete"); 

     } else { 
      holder.complete.setText("Complete"); 
      holder.complete.setBackgroundDrawable(context.getResources() 
        .getDrawable(R.drawable.green_button_bg)); 
     } 
     for (int i = 0; i < data.get(position).getItems().size(); i++) { 
      holder.order_row.addView(getChildView(position, i)); 
     } 

     holder.complete.setOnClickListener(new ButtonOnClickListener(
       clickListener, orderno_)); 
     return convertView; 
    } 

    private View getChildView(int pos, int i) { 
     View child = inflater.inflate(R.layout.order_item, null); 
     InnerViewHolder inholder = new InnerViewHolder(); 
     inholder.name = (TextView) child.findViewById(R.id.order_name); 
     inholder.items = (ListView) child.findViewById(R.id.order_list); 

     inholder.name.setText(data.get(pos).getItems().get(i).getItemName()); 
     inholder.items.setAdapter(new OrderItemOptionAdapter(context, data 
       .get(pos).getItems().get(i).getOptions())); 

     return child; 
    } 

    static class ViewHolder { 
     GridLayout order_row; 
     TextView order_no, order_date; 
     Button complete; 

    } 

    static class InnerViewHolder { 
     TextView name; 
     ListView items; 
    } 

但我看不到任何网格物品。请给我提供正确的实现方法

+0

我已在XML一些变化,现在它的表现 – Sridhar

回答

0

在getChildView()我写这段代码。现在它显示网格。但我不想使用硬编码值。

child.setLayoutParams(new GridLayout.LayoutParams(new LayoutParams(250,300)));

任何有效的答案是赞赏

相关问题