android穿gridviewpager onClick Listener

时间:2014-10-13 15:16:22

标签: android onclicklistener wear-os

我正在开发一个简单的应用程序,其中您在谷歌地图上放置了不同的位置。 当我点击某个地点时,我会得到其详细信息,这些信息显示在 GridViewPager 中。 目前我的应用程序基于sdk提供的 GridViewPager 示例。

这是我的现场细节布局(没什么特别的)

<android.support.wearable.view.GridViewPager
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/pager"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:keepScreenOn="true"/>

我现在的问题是我无法在卡片上检测到Click事件。 我试过这个但是它没有用。

public class DetailsActivity extends Activity implements GridViewPager.OnClickListener {


@Override
public void onClick(View v) {

}

我也试过了View.OnClickListener。

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

这里有两个问题。首先,如果你真的想让GridViewPager可以点击,你需要告诉它监听点击事件 - 仅仅实现OnClickListener接口是不够的。所以你需要做这样的事情:

public class DetailsActivity ... {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        ...

        GridViewPager pager = (GridViewPager)findViewById(R.id.pager);
        pager.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                // put your onClick logic here
            }
        });

        ...
    }
}

然而,话虽如此,根据您的描述,听起来您真正想要的是在网格中的各个页面上设置点击处理程序,而不是在整个网格上。如果是这样,那么你需要在每个页面的Fragment类中做类似的事情。例如:

public class MyPageFragment extends Fragment {
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View result = inflater.inflate(...);
        result.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                // put your onClick logic here
            }
        });

        ...

        return result;
    }
}

注意:如果您在GridViewPager中使用CardFragments,那么您可能会在onCreateContentView覆盖中设置OnClickListener。否则,应该应用上面基于片段的示例。