实际上我认为ListFragment的ListView
应该是在OnActivityCreated
中创建的。添加OnTouchListener到ListFragment中的每行ListView
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
...initialize the namesList
ArrayAdapter<String> adapter = new ArrayAdapter<String>(getActivity(),
android.R.layout.simple_list_item_1, namesList);
setListAdapter(adapter);
}
然后我访问onResume
的ListView
到列表(=孩子)一个OnTouchListener
添加到每一行但是有没有孩子加入到ListView尚未 - 即使它们应该是由于上面的代码在onActivityCreated
人们应该期望。
@Override
public void onResume() {
super.onResume();
ListView lv = getListView();
int n1 = lv.getChildCount();
for (int ii = 0; ii < n1; ii++) {
View lineV = lv.getChildAt(ii);
lineV.setOnTouchListener(new MyTouchListener());
}
}
因此添加OnTouchListener的最后机会是OnListItemClick
。 (因为没有孩子之前ListView控件)
@Override
public void onListItemClick(ListView l, View v, int position, long id) {
v.setPressed(false);
ListView lv = getListView();
int n1 = lv.getChildCount();
for (int ii = 0; ii < n1; ii++) {
View lineV = lv.getChildAt(ii);
lineV.setOnTouchListener(new MyTouchListener());
}
}
但即使在这里,OnTouchListeners
仍然没有被添加到显示的行。
只有在触摸显示名称列表中的某些行几次后,才会添加OnTouchListener
并截取触摸。
但在此之前,正常的onListItemClick
捕捉的触动 - 我只是不想发生。
所有我需要的是当显示的列表,所以我可以做我想做的事情,而不是让OnListItemClick
处理该事件的OnTouchListeners
从一开始就加入到每一行的ListView
。
(其实我是想拖动行同时按下线 - OnListItemClick
只有在启动后线一直不变)
非常感谢!