J'essaie d'utiliser la méthode OnItemClickListener
dans un ListView
mais il n'est pas appelé parce que ViewPager
intercepte les événements tactiles.Utiliser OnItemClickListener dans ListView dans ViewPager
J'ai essayé
mPager.requestDisallowInterceptTouchEvent(false);
dans mon FragmentActivity
et
lista.setDescendantFocusability(ListView.FOCUS_BLOCK_DESCENDANTS);
dans ma méthode onCreate dans ListFragment
mais rien ne se passe. ("lista" est mon ListView
).
est ici le code de la méthode OnItemClickListener
:
lista = (ListView) view.findViewById(id.list);
lista.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
//It's not being called
}
});
Il y a quelques jours je ne Activities
au lieu de Fragments
(maintenant je besoin d'eux à cause de ViewPager
) et le code a bien fonctionné, donc je pense que XML est pas nécessaire.
EDIT Ajouter plus de code:
FragmentActivity
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's not being called
}
});
return view;
}
}
"J'essaie d'utiliser OnItemClickListenermethod dans un ListView mais il n'est pas appelé car ViewPagerintercepte les événements tactiles" - c'est plutôt improbable. Vous pouvez utiliser toutes sortes de widgets interactifs à l'intérieur d'un 'ViewPager', sans problèmes. – CommonsWare
La structure normale doit avoir ViewPager dans MainActivity, puis ViewPager héberge différentes instances de fragment ou de fragment. Le onItemClickListener doit être défini à partir du fragment lui-même, pas de l'activité. Il ne devrait pas y avoir d'interférence du tout. –
Mais si j'initialise mon ListView dans ma classe Fragment, pas dans FragmentActivity, comment puis-je y parvenir? – Lyd