为什么getListView()。getChildAt()方法在填充的ListView中返回null?

时间:2012-08-09 07:20:50

标签: android android-listview listviewitem

我有listview,有5000个项目。 我想在某个位置获取listview项并用它做smth,我调用getListView()。getChildAt(1)方法并返回null。

protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_items);

cur = ItemDao.getItemsCursor();
column_names = new String[] { ItemDao.NAME, ItemDao.MEASUREUNIT, ItemDao.REM };
columns = new int[] { R.id.item_name, R.id.item_measureunit, R.id.item_rem };

scadap = new SimpleCursorAdapter(this, R.layout.list_items, cur, column_names, columns, 0);
ListView list = getListView();

list.setDivider(getResources().getDrawable(android.R.drawable.divider_horizontal_bright));
list.setDividerHeight(10);

setListAdapter(scadap);
list.invalidateViews();
  (getListView().getChildAt(getListView().getFirstVisiblePosition())).setVisibility(View.INVISIBLE);






}

2 个答案:

答案 0 :(得分:1)

问题可能是由于尝试在onCreate()上检索列表视图的子项,其中任何与视图相关的方法将返回null(或为空),因为列表尚未呈现。

一种解决方案可能是获取listview并使用onPostCreate()方法设置适配器和侦听器。

答案 1 :(得分:0)

尝试使用OnItemClickListener()获取所选项目

listView.setOnItemClickListener(new OnItemClickListener() {

public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
        long arg3) {
    // TODO Auto-generated method stub
    String  getSelectedItemOfList = yourList.get(pos); // here you can get selected item.
        }
});

希望这有帮助。