Я использую базовый адаптер и заполняю различные компоненты каждого элемента списка соответствующими элементами разных списков массивов. Я использую следующий код:Ссылка на нулевой объект Android в базовом адаптере
public class OfflineAdapter extends BaseAdapter {
static Context context;
static int layoutResourceId;
ArrayList<String> qid = new ArrayList<String>();
ArrayList<String> author = new ArrayList<String>();
ArrayList<String> title = new ArrayList<String>();
ArrayList<String> vote = new ArrayList<String>();
public OfflineAdapter(Context c,int layoutResourceId,ArrayList<String> qid,ArrayList<String> author,ArrayList<String> title,ArrayList<String> vote)
{
//super(c,layoutResourceId,qid,author,title,vote);
this.context = c;
this.layoutResourceId = layoutResourceId;
this.qid = qid;
this.author = author;
this.title = title;
this.vote = vote;
}
@Override
public int getCount() {
return 20;
}
@Override
public Object getItem(int position) {
return qid.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
public View getView(int position, View convertView, ViewGroup parent) {
View row = convertView;
QuestionHolder holder = null;
if(row == null)
{
LayoutInflater inflater = ((Activity)context).getLayoutInflater();
row = inflater.inflate(layoutResourceId, parent, false);
holder = new QuestionHolder();
holder.txtTitle = (TextView)row.findViewById(R.id.questionTitle);
holder.txtTitle2 = (TextView)row.findViewById(R.id.questionAuthor);
holder.txtTitle3 = (TextView)row.findViewById(R.id.questionVotes);
holder.txtTitle4 = (TextView)row.findViewById(R.id.questionID);
row.setTag(holder);
}
else
{
holder = (QuestionHolder)row.getTag();
}
//Question hold = data[position];
//if(hold!=null) {
holder.txtTitle.setText(Html.fromHtml(title.get(position)));
holder.txtTitle2.setText(author.get(position));
holder.txtTitle3.setText(vote.get(position));
holder.txtTitle4.setText(qid.get(position));
//}
return row;
}
static class QuestionHolder
{
TextView txtTitle;
TextView txtTitle2;
TextView txtTitle3;
TextView txtTitle4;
}
Но я получаю следующее сообщение об ошибке:
попытка вызвать виртуальный метод 'java.lang.Object java.util.ArrayList.get (INT)' на нулевой объект ссылки
на этой линии:
holder.txtTitle.setText(Html.fromHtml(title.get(position)));
Что может быть причина? Я инициализировал все списки массивов, и ни один из них не имеет значения null.
Спасибо!
Вам следует использовать метод qid.size() как метод getCount(). –
Как вы называете этот адаптер? Можете ли вы опубликовать этот код и посмотреть, имеет ли значение 'ArrayList title' значение? Потому что, поскольку ваше исключение говорит, что ваш «список заголовков» не имеет никакого значения. – BBdev
Offtopic: у вас могут быть какие-либо проблемы здесь, но всякий раз, когда я вижу «статический контекст контекста», я знаю, что он задает проблемы. – wujek