在列表视图中返回不同的视图
returning different views in listview
我有一个自定义列表视图,想 return/根据条件扩充。我希望根据条件显示或不显示行。
在 getView() 中我有以下内容
if (convertView == null) {
// Inflate the layout
LayoutInflater li = getLayoutInflater();
convertView = li.inflate(
R.layout.contactos_list_item, null);
contactViewHolder = new ContactViewHolder();
contactViewHolder.imgContact = (ImageView) convertView
.findViewById(R.id.flag);
contactViewHolder.txtViewContactName = (TextView) convertView
.findViewById(R.id.txtView_name);
contactViewHolder.txtViewPhoneNumber = (TextView) convertView
.findViewById(R.id.txtview_number);
convertView.setTag(contactViewHolder);
} else {
contactViewHolder = (ContactViewHolder) convertView.getTag();
}
我想 return
if(condition)
{
return convertView;
}
else
{
LayoutInflater li = getLayoutInflater();
convertView=li.inflate(R.layout.row_null,null);
return convertView;
}
我有合适的 xml 布局,但应用程序停止工作。我应该改变什么
虽然您没有在 if
条件下扩充新布局,但我敢打赌您会得到一个 NullPointerException,因为您可能会从回收机制中得到错误的布局。
像这样更改您的代码:
@Override
public View getView(int position, View convertview, ViewGroup parent) {
LayoutInflater inflater = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
if (condition) {
convertview = inflater.inflate(R.layout.first_layout, null);
//do your stuff
} else {
convertview = inflater.inflate(R.layout.second_layout, null);
// do your stuff
}
return convertview;
}
我有一个自定义列表视图,想 return/根据条件扩充。我希望根据条件显示或不显示行。
在 getView() 中我有以下内容
if (convertView == null) {
// Inflate the layout
LayoutInflater li = getLayoutInflater();
convertView = li.inflate(
R.layout.contactos_list_item, null);
contactViewHolder = new ContactViewHolder();
contactViewHolder.imgContact = (ImageView) convertView
.findViewById(R.id.flag);
contactViewHolder.txtViewContactName = (TextView) convertView
.findViewById(R.id.txtView_name);
contactViewHolder.txtViewPhoneNumber = (TextView) convertView
.findViewById(R.id.txtview_number);
convertView.setTag(contactViewHolder);
} else {
contactViewHolder = (ContactViewHolder) convertView.getTag();
}
我想 return
if(condition)
{
return convertView;
}
else
{
LayoutInflater li = getLayoutInflater();
convertView=li.inflate(R.layout.row_null,null);
return convertView;
}
我有合适的 xml 布局,但应用程序停止工作。我应该改变什么
虽然您没有在 if
条件下扩充新布局,但我敢打赌您会得到一个 NullPointerException,因为您可能会从回收机制中得到错误的布局。
像这样更改您的代码:
@Override
public View getView(int position, View convertview, ViewGroup parent) {
LayoutInflater inflater = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
if (condition) {
convertview = inflater.inflate(R.layout.first_layout, null);
//do your stuff
} else {
convertview = inflater.inflate(R.layout.second_layout, null);
// do your stuff
}
return convertview;
}