我有一个任务来扩充XML视图。我真的不明白该怎么做。一世 使用了基础适配器。
@Override
public View getView(int position, View convertView, ViewGroup parent) {
//TODO - Get the current ToDoItem
final ToDoItem toDoItem = mItems.get(position);
//TODO - Inflate the View for this ToDoItem
// from todo_item.xml.
RelativeLayout itemLayout =(RelativeLayout)convertView.findViewById(R.id.RelativeLayout1);
View InflatedView= null;
todo_item.xml看起来像
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/RelativeLayout1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<TextView>
<!-- some code -->
</TextView>
</RelativeLayout>
我按照下面显示的内容
RelativeLayout itemLayout =
(RelativeLayout)convertView.findViewById(R.id.RelativeLayout1);
LayoutInflater mInflater = LayoutInflater.from(mContext);
convertView = mInflater.inflate(R.layout.todo_item, parent, false);
if(convertView==null){
convertView= new RelativeLayout(mContext);
}
但这不起作用。我也不理解传递给getview方法的convertView。
答案 0 :(得分:0)
ListView
API有一些怪癖。
convertView
中提供给您的getView()
参数实际上是可以为空的。这是ListView
允许您在用户滚动列表时回收视图的方式。因此,您无法使用它来夸大RelativeLayout
。
要获取您的视图,您应首先检查convertView
是否为空。如果是,那么您需要使用提供给您的View
参数来充气parent
。
RelativeLayout itemLayout;
if (convertView != null) {
itemLayout = (RelativeLayout) convertView;
} else {
LayoutInflater inflater = LayoutInflater.from(parent.context);
itemLayout = (RelativeLayout) inflater.inflate(R.layout.todo_item, parent, false);
}