在列表视图中返回不同的视图

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;
}