我有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);
}
答案 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.
}
});
希望这有帮助。