На самом деле я думал, что ListView
ListFragment будет создан в OnActivityCreated
.
@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);
}
Затем я получаю доступ к ListView
в onResume
, чтобы добавить 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
перехватывает прикосновения - что я просто не хочу, чтобы это произошло.
Все, что мне нужно, это добавить OnTouchListeners
к каждой строке в ListView
из ОЧЕНЬ НАЧАЛА, когда отображается список, чтобы я мог делать все, что захочу, вместо того, чтобы OnListItemClick
обрабатывал событие.
(на самом деле я хочу перетащить линию, нажимая на нее - OnListItemClick
начинается только ПОСЛЕ того, как линия не тронута)
Большое спасибо!