在ViewPager中的ListView中使用OnItemClickListener

时间:2013-09-02 15:36:57

标签: android listview android-listview android-fragments

我正在尝试在OnItemClickListener中使用ListView方法,但由于ViewPager拦截了触摸事件,因此未对其进行调用。

我试过

mPager.requestDisallowInterceptTouchEvent(false);

在我的FragmentActivity

lista.setDescendantFocusability(ListView.FOCUS_BLOCK_DESCENDANTS);

ListFragment中的onCreate方法中但没有任何反应。 (“lista”是我的ListView)。

以下是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
    }

});

前几天我只使用了Activities而不是Fragments(现在因为ViewPager我需要它们)并且代码工作正常,所以我认为不需要xml。

编辑添加更多代码:

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;

    }

}

1 个答案:

答案 0 :(得分:1)

我认为这个问题可能是由listView项引起的。如果您的listView项目包含可点击的视图(按钮,复选框等),则不会调用 OnItemClickListener