0

我有一个自定义列表视图,并希望根据条件返回/膨胀。我希望根据条件显示或不显示行。

在 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();
            }

我想回来

if(condition)
{
  return convertView;
}
else
{
   LayoutInflater li = getLayoutInflater();
   convertView=li.inflate(R.layout.row_null,null);
   return convertView;
}

我有适当的 xml 布局,但应用程序停止工作。我应该改变什么

4

1 回答 1

0

虽然您没有在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;
}
于 2015-09-24T23:09:27.213 回答