我使用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个不同的列表项
请提供一些代码。帮助赞赏
答案 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对象从你的活动传递给适配器的构造函数。