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

Android 为什么getListView().getChildAt()方法在填充的ListView中返回null?,android,android-listview,listviewitem,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

我有一个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);






}

尝试使用
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.
        }
});
listView.setOnItemClickListener(新的OnItemClickListener(){
公共链接(AdapterView arg0、视图arg1、内部arg2、,
长arg3){
//TODO自动生成的方法存根
String getSelectedItemOfList=yourList.get(pos);//在这里可以获取所选项目。
}
});

希望这会有所帮助。

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


一种解决方案是获取listview并在
onPostCreate()
方法中设置适配器和侦听器

你能发布你的代码以便我们更好地理解这个问题吗?乍一看,您的列表中似乎没有值。@CosminCalistur添加了代码,“我的列表视图中有项目”,我选中了请查看我的更新答案。我在onPostCreate()中写入此内容,得到的结果与如果我不想在单击时更改项目相同,例如,当某个条件变为true@Vahan您必须更改/修改列表还是什么?如果是这样,那么您可以为适配器使用
notifyDatasetChange()
方法。例如,修改列表的元素,列表项具有布尔属性isnew,并使用其他颜色显示新项