2013-09-26 2 views
1

Я написал следующий код:Почему мой textView не найден в андроиде ArrayAdapter?

TodosOverviewActivity extends ListActivity{ 

    @Override 
     public void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.todo_list); 
      this.getListView().setDividerHeight(2); 
      registerForContextMenu(getListView()); 
      fillData(); 
     } 



    private void fillData() { 

    fetchEvents(); 

    adapter2 = new MySimpleArrayAdapter 
       (this, nameOfEvent, startDates, descriptions); 
    setListAdapter(adapter2); 
      } 

public class MySimpleArrayAdapter extends ArrayAdapter<String> { 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 

     LayoutInflater inflater = (LayoutInflater) mContext 
       .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

     View rowView = inflater.inflate(R.layout.todo_list, parent, false); 

     TextView titleTextView = (TextView) rowView 
       .findViewById(R.id.todo_row_title); 
     TextView dateTextView = (TextView) rowView 
       .findViewById(R.id.todo_row_date); 
     ImageView imageView = (ImageView) rowView 
       .findViewById(R.id.todo_row_image); 

      titleTextView.setText(mTitles[position]); 

    .. 

    } 

Однако это терпит неудачу на NullPointer titleTextView. Что мне не хватает?

+2

добавьте XML-файл 'todo_list' –

+0

. Вы могли бы посоветовать? спасибо –

ответ

2

Изменить это - в getView():

View rowView = inflater.inflate(R.layout.todo_list, parent, false); 

к:

View rowView = inflater.inflate(R.layout.todo_row, parent, false); 

для кода ради, я надеюсь, в fillData() метод fetchEvents(); не вызывает сети на UI нить :)

+0

Я поделюсь на другую тему. Кстати, как я могу узнать, работает ли приложение G-calendar в автономном режиме с помощью локального приложения или требуется сеть? –

+1

Чтобы добавить немного объяснений: вы пытаетесь найти мнения, которые не были завышены. Вы заработали todo_list.xml, и вы используете это, чтобы найти представление с идентификатором «todo_row_image», который не является частью иерархии представлений для todo_list, так что вызов возвращает null, а значит и исключение NullPointerException. –

+0

@ Elad Я не уверен, что нужно знать, кроме тестирования. Если это потребует создания сети, это приведет к сбою, если вы сделаете это в потоке пользовательского интерфейса. –

1

Try:

View rowView = inflater.inflate(R.layout.todo_list, null); 

и не забудьте вернуться rowView в конце функции.

+2

почему это будет работать? –

Смежные вопросы