Use OnItemClickListener in ListView inside ViewPager

I am trying to use the OnItemClickListener method in a ListView , but it is not called because the ViewPager intercepts touch events.

I tried

 mPager.requestDisallowInterceptTouchEvent(false); 

in my FragmentActivity and

 lista.setDescendantFocusability(ListView.FOCUS_BLOCK_DESCENDANTS); 

in my onCreate method in ListFragment , but nothing happens. ("lista" is my ListView ).

Here is the code for the OnItemClickListener method:

 lista = (ListView) view.findViewById(id.list); lista.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { //It not being called } }); 

A few days ago, I used only Activities instead of Fragments (now I need them because of ViewPager ), and the code worked fine, so I believe that xml is not needed.

EDIT Add Code:

Fragmentmentctivity

 public class TabsFacturasActivity extends SherlockFragmentActivity { private static class MyAdapter extends FragmentPagerAdapter { private String[] titles = { "VER FACTURAS", "VER CONSUMO", "INTRODUCIR LECTURA" }; private final FragmentManager mFragmentManager; private Fragment mFragmentAtPos0; public MyAdapter(FragmentManager fragmentManager) { super(fragmentManager); mFragmentManager = fragmentManager; } @Override public CharSequence getPageTitle(int position) { return titles[position]; } @Override public Fragment getItem(int position) { switch (position) { case 0: // Fragment # 0 return new FacturasFragment(); ... } return null; } @Override public int getCount() { return titles.length; } @Override public int getItemPosition(Object object) { if (object instanceof FacturasFragment && mFragmentAtPos0 instanceof DetallesFacturaFragment) return POSITION_NONE; return POSITION_UNCHANGED; } } 

Listfragment

 public class FacturasFragment extends ListFragment { private ListView lista; public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.activity_facturas, container, false); ... lista = (ListView) view.findViewById(id.list); lista.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { //It not being called } }); return view; } } 
+4
source share
1 answer

I think the problem might be caused by listView elements. If listView elements contain interactive views (buttons, check boxes, etc.), your OnItemClickListener will not be called.

+1
source

Source: https://habr.com/ru/post/1500173/


All Articles