实际上我认为ListFragment的ListView
将在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
会触及 - 我不想发生这种情况。
我需要的是在显示列表时,从{VERY BEGINNING'中OnTouchListeners
的每一行添加ListView
,这样我就可以做任何我想做的事情而不是OnListItemClick
处理这个事件。
(我实际上想在按下线的同时拖动线条 - OnListItemClick
仅在线条未被触及后开始)
非常感谢!
答案 0 :(得分:1)
覆盖onViewCreated并在那里添加你的监听器
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
ListView listView = getListView();
MyListViewTouchListener touchListener =
new MyListViewTouchListener (listView);
listView.setOnTouchListener(touchListener);
}
答案 1 :(得分:0)
在为列表视图中的每一行添加一个监听器方面,我之前做过类似的事情。
您需要做的是创建ArrayAdapter的子类。然后在getView()方法中,在返回之前将MyTouchListener设置为onTouchListener到视图中。