flipviewpager里面的setOnClickListener无效

时间:2015-08-24 10:55:06

标签: android

我正在使用this Link

单击Toast的列表项内部发生,但我希望点击应该在Textview上翻转列表视图后发生,它应该打开一个片段。请建议我实现它的一些方法。

帮助将在星空之上受到赞赏。

    FlipSettings settings = new   FlipSettings.Builder().defaultPage(1).build();
    friends.setAdapter(new FriendsAdapter(getActivity(), Utils.friends, settings));
    friends.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            Friend f = (Friend) friends.getAdapter().getItem(position);
            Toast.makeText(getActivity(), f.getNickname(), Toast.LENGTH_SHORT).show();

        }
    });

1 个答案:

答案 0 :(得分:0)

请注意从FrameLayout类扩展的FlipViewPager。这里的问题是framelayout不可点击,因为viewgroup强制onintercepttouchevent返回false。因为您无法在FlipViewPager中为任何视图制作click事件。 我在这里提出的解决方案如下: 步骤1:在friends_info.xml中删除一个按钮,并将其命名为detailButton。 第2步:现在打开FlipViewPager类并将OnClickListener声明为全局。 第3步:覆盖setOnClickListener方法,如下所示

 @Override
    public void setOnClickListener(OnClickListener l) {
        super.setOnClickListener(l);
        mOnClickListener = l;
    }
第4步:这是诀窍!我们正在从onInterceptTouchEvent方法中捕获click事件。转到onInterceptTouchEvent(MotionEvent ev)方法并编写如下逻辑

if(action == MotionEvent.ACTION_DOWN && !flipping) return mOnClickListener != null;

上述语句检查是否发生了click事件并且没有翻转事件并返回true;

在FriendsActivity中声明Button按钮的详细信息;在FriendsAdapter里面的FriendsHolder类里面。 然后转到getPage方法初始化按钮。 内部if(convertView == null)语句初始化为holder.details =(Button)holder.infoPage.findViewById(R.id.detailButton); 并添加点击监听器

 holder.details.setOnClickListener(new View.OnClickListener() {

                    @Override
                    public void onClick(View v) {
                        // TODO Auto-generated method stub
                        Toast.makeText(getApplicationContext(), "Hurray! You clicked", Toast.LENGTH_LONG).show();
                    }
                });

就是这样!