實際上我認爲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
只有在啓動後線一直不變)
非常感謝!