如何正确使用LayoutInflater inflater

时间:2012-04-03 06:47:49

标签: android listview layout-inflater

我使用java代码创建了Layout设计,而不是使用XML Layout Designs。我使用的代码是

 public View getView(int position, View convertView, ViewGroup parent) {
  TextView tv = new TextView(mContext);
  tv.setText(hotelList.get(position).name);
  return tv;
  }

如何使用layoutInflator为此创建布局。我需要在单个列表项中再添加2个文本视图。整个列表包含10个不同的列表项

请提供一些代码。帮助赞赏

3 个答案:

答案 0 :(得分:2)

我想你知道如何为这个布局制作XML布局。因此,只需使用以下代码制作XML布局并获取主布局的对象:

LinearLayout mainLayout=(LinearLayout) View.inflate(R.layout.yourlayout); //if yourlayout.xml is the name of the xml file you made and put in the layout folder.

要获取布局的子项,让我们说如果它是TextView且标识为text,则代码为:

TextView textView=(TextView)mainLayout.findViewById(R.id.text);

答案 1 :(得分:2)

我之前通过我的静态课程已经完成了这个。看看这个,它会有所帮助:

@Override
    public View getView(int position, View convertView, ViewGroup parent) {
        View rowView = convertView;


        if ( rowView == null) {

            LayoutInflater inflator = this._activity.getLayoutInflater();
            rowView = inflator.inflate(R.layout.todolistlisting, null);
            TodoListViewHolder viewHolder = new TodoListViewHolder();
            viewHolder._name        = (TextView) rowView.findViewById(R.id.tVTLName);           
            viewHolder._completed   = (TextView) rowView.findViewById(R.id.tVTLCCount);
            viewHolder._remaining   = (TextView) rowView.findViewById(R.id.tVTLRCount);
            rowView.setTag(viewHolder);

        }

        TodoListViewHolder holder = (TodoListViewHolder) rowView.getTag();
        VO_TodoList votodolist = this._items.get(position);         
        holder._name.setText(votodolist._title);            
        holder._completed.setText(votodolist._completed);
        holder._remaining.setText(votodolist._remaining);

        return rowView;     

    }

TodoListViewHolder是我的视图组件持有者。就像你的TextView

一样

答案 2 :(得分:0)

您可以使用这样的inflater在运行时添加视图

LinerLayout linearLayout = (LinearLayout)inflater.inflate(R.layout.news_categories_item, null);

TextView categoryValueTextView = (TextView)linearLayout.findViewById(R.id.news_category_item_value);

mMainLinearLayout.addView(categoryValueTextView);

这里我在运行时向另一个线性布局(这是简单的线性布局,仅包含textview)中放置一个文本视图,并将其添加到我的主线性布局中。

您可以使用getLayoutInflater()获取活动中的inflater对象。如果你想在适配器中获得inflater,你必须将inflater对象从你的活动传递给适配器的构造函数。