Мне нужно, чтобы у моего списка всегда был элемент трейлинг-списка, отличный от других элементов списка, даже если адаптер пуст.Как добавить дополнительный элемент списка в список?
Я попытался добавить нулевой элемент в конце набора данных в конструкторе адаптера:
mDataset.add(null);
В методе GetView я различать между последним элементом и другими и надуть различные схемы соответственно.
Когда пользователь добавляет новый элемент списка, нужно удалить нулевой элемент в наборе данных, добавить новые данные в конце набора данных, а затем добавить еще один нулевой элемент в последнем индексе набора данных:
public void addData(String data) {
mDataset.remove(mDataset.indexOf(null));
mDataset.add(data);
mDataset.add(null);
notifyDataSetChanged();
}
Это, конечно, называется внутри адаптера. Когда я запустить приложение я получаю следующее сообщение об ошибке:
java.lang.NullPointerException: Attempt to read from field 'android.widget.TextView com.neutronstar.revu.DataAdapter$DataViewHolder.mDataTextView' on a null object reference
Какие карты в этой линии в методе GetView() моего адаптера:
holder.mDataTextView.setText(mDataset.get(position));
Вот метод GetView() в адаптере :
@Override
public View getView(int position, View convertView, ViewGroup parent) {
long viewType = getItemId(position);
Log.i("SPECS ADAPTER", viewType + "");
if (getCount() == 0)
convertView = LayoutInflater.from(mContext).inflate(R.layout.item_add_spec, null);
else if (viewType == NOT_LAST_ITEM) {
SpecViewHolder holder;
if (convertView == null) {
convertView = LayoutInflater.from(mContext).inflate(R.layout.item_spec, null);
holder = new SpecViewHolder(convertView);
convertView.setTag(holder);
} else
holder = (SpecViewHolder) convertView.getTag();
holder.mSpecTextView.setText(mSpecs.get(position));
} else {
if (convertView == null)
convertView = LayoutInflater.from(mContext).inflate(R.layout.item_add_spec, null);
}
return convertView;
}
public void addSpec(String spec) {
mSpecs.remove(mSpecs.indexOf(null));
mSpecs.add(spec);
mSpecs.add(null);
notifyDataSetChanged();
}
static class SpecViewHolder {
@BindView(R.id.spec_text_view) TextView mSpecTextView;
SpecViewHolder(View view) {
ButterKnife.bind(this, view);
}
}
Как исправить эту ошибку?
Благодаря
В принципе, вы хотите добавить нижний колонтитул ** –
Мне нужен дополнительный элемент списка, поэтому его часть списка, но она всегда отображается в нижней части списка. @Rotwang –
показать ur getView() код – uguboz