2013-06-10 2 views
0

У меня есть Listview и адаптер для этого списка. И ArrayList, который связан (?) С этим адаптером.Сколько времени нужно, чтобы добавить ребенка в список?

Я добавляю товар в этот Arraylist. Я вызываю метод notifyDataSetChanged().

I Сразу после того, как я называю

listview.getChildAt(myadapter.getCount()-1) 

Теперь я получаю NullPointerException. В отладчике я также вижу, что mChildren of Listview заполняется нулем. Почему это так? Нужно ли больше времени?

Cu JackZ

ответ

1

Это потому, что ваш адаптер ListView может иметь тысячи предметов, но ListView имеет не более десяти до двадцати прямых детей.

пытается добавить к вашему Activity.onCreate

final ArrayAdapter<String> a = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1); 
a.add("0"); 
a.add("1"); 
final ListView lv = new ListView(this); 
lv.setAdapter(a); 
OnItemClickListener listener = new OnItemClickListener() { 
    @Override 
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
     Log.d(TAG, "onItemClick cnt " + lv.getChildCount()); 
     Log.d(TAG, "onItemClick first " + lv.getFirstVisiblePosition()); 
     Log.d(TAG, "onItemClick last " + lv.getLastVisiblePosition()); 
     a.add(Integer.toString(a.getCount())); 
     lv.post(new Runnable() { 
      @Override 
      public void run() { 
       Log.d(TAG, "run cnt " + lv.getChildCount()); 
       Log.d(TAG, "run first " + lv.getFirstVisiblePosition()); 
       Log.d(TAG, "run last " + lv.getLastVisiblePosition()); 
      } 
     }); 
    } 
}; 
lv.setOnItemClickListener(listener); 
setContentView(lv); 

, и вы увидите, как это работает

+0

я должен отметить, что это происходит с самого начала. И он также снова отображается на экране – JackZ

+0

, заполнив ваш адаптер предметами hundrets и, например, в журнале регистрации кликов lv.getChildCount(), вы увидите, что хотя атрибут adapter.getCount() равен hundrets, список имеет только несколько прямых дочерних элементов , поэтому вы не можете getChildAt (adapter.getCount() - 1) – pskink

+0

Все еще это действительно не проблема! Я также использовал ListView.getLastVisiblePosition(), и он не работает ... – JackZ

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