1

我在ListView中有ViewPager。一切正常(列表視圖中的垂直滾動/ ViewPager中的水平滾動)。但我有問題捕捉列表視圖項目上的單擊事件(viewpager填充列表視圖項目)。在列表視圖中使用ViewPager時OnItemClickListener不會被調用

到目前爲止我試圖

  • 設置列表視圖可點擊

  • 延伸Viewpager並添加檢測水平滾動,並設置 requestDisallowInterceptTouchEvent(false)手勢檢測器如果動作不是水平滾動

  • setOnItemClickListener爲我的清單視圖

問題setOnItemClickListener不會被調用

我也試圖dirrectly添加的onclick聽者到viewPager但聽者不叫藏漢

Basicly我要找一種溶劑,我可以檢測列表視圖項目或頁面查看器上的點擊並啓動一個意圖。

PS手柄上的android如何在觸摸事件的看法將是任何鏈接還讚賞

回答

6

你接近,但不是對ViewPager本身設置一個onClickListener,你必須設置一個onClickListenerViewPager視圖的PagerAdapter(你必須擴展)。

在你ListViewgetView(),你實例的ViewPager,設置一個適配器將PagerAdapter(這裏所說的「ExtendedPagerAdapter):

ViewPager pager = (ViewPager) container.findViewById(R.id.pager); 
ExtendedPagerAdapter adapter = new ExtendedPagerAdapter(context, list); 
pager.setAdapter(adapter); 

然後,在你ExtendedPagerAdapter類,重寫(除其他事項外)instantiateItem(ViewGroup, int)

@Override 
public Object instantiateItem(ViewGroup container, int position) { 
    LayoutInflater inflater = (LayoutInflater) 
     context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    View theView = list.get(position).getView(inflater); 

    theView.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      //perform action 
     } 
    }); 

    container.addView(theView, 0); 
    return theView; 
} 
+0

我有同樣的問題,但我不希望設置聽者ViewPager,我需要將其設置爲onItemClickListener,任何建議的項目? –

+0

@MortezaSoleimani你可以使用'theView.findViewById();' – Tomasz

相關問題