Возвращая разные взгляды в виде списка
У меня есть собственный просмотр списка и я хочу вернуть / раздуть в зависимости от условия. Я хочу, чтобы строки отображались или не отображались в зависимости от условия.
В 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, но приложение перестает работать. что я должен изменить так
1 ответ
Решение
Пока вы не раздуваете новый макет в 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;
}