ListView правильно не показывает собственный адаптер массива? - PullRequest
1 голос
/ 18 декабря 2010

Здравствуйте, у моего приложения для Android есть функция, которая вызывается из другого действия с Intent. После вызова метода onCreate объекта ListActivity создайте новый AsynchTask, вызовите веб-службу и поместите все данные в мои данные ArrayList из веб-службы.но когда я пытаюсь реализовать getView вещей customArrayAdapter, все становится более странным, иногда он показывает содержимое списка, иногда нет или иногда, когда я прокручиваю. Вот мой метод getView пользовательского адаптера.(Layout = textview + listView)

class EntryDetailsAdapter extends ArrayAdapter<Entry>{

      private ArrayList<Entry> entryDetails;
      private Entry tempEntry;

      public EntryDetailsAdapter(Context context, int textViewResourceId,
        List<Entry> objects) {
       super(context, textViewResourceId, objects);
       // TODO Auto-generated constructor stub
       entryDetails =  (ArrayList<Entry>) objects;
      }

      @Override
      public View getView(int position, View convertView, ViewGroup parent) {
       // TODO Auto-generated method stub
       View mView = convertView;

       if(mView == null){

        LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        mView = inflater.inflate(R.layout.entry_rows, null);

       }

       tempEntry = entryDetails.get(position);
       //data is fine but problem is while occur while showing data

       if(tempEntry != null){
        //get the textview from list row xml that i defined
        TextView textView = (TextView) findViewById(R.id.entryRowTextView);
        if(textView != null){
        //i dont know why but this sometimes giving null so check
         textView.setText(tempEntry.getEntryContent());
        }
       }
       return mView;
      }
     }

[ПРИМЕЧАНИЕ] Возможно, проблема похожа на этот вопрос , но я не смог найти решение

Ответы [ 2 ]

0 голосов
/ 19 декабря 2010

Попробуйте:

 TextView textView = (TextView)mView.findViewById(R.id.entryRowTextView);

вы пропустили mView при получении поля TextView конкретной строки.

0 голосов
/ 19 декабря 2010

Поскольку вы сказали, что ваши данные для отображения в списке объединены с веб-службой, возможно, данные еще не загружены и вы уже пытаетесь получить к ним доступ?Вы ожидаете загрузки данных из сервиса перед настройкой адаптера списка?

...