android wear gridviewpager onClick Listener

北慕城南 提交于 2019-12-22 14:52:05

问题


I'm developing a simple application in which youb have different spots placed on google map. When I click on a spot I get its details which are displayed in a GridViewPager. For now my application is based on the GridViewPager sample available with the sdk.

Here is my layout for the spot details (nothing fancy)

<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"/>

My problem now is that I'm not able to detect a Click event on a card. I've tried this but it doesn't work.

public class DetailsActivity extends Activity implements GridViewPager.OnClickListener {


@Override
public void onClick(View v) {

}

I've also tried View.OnClickListener.

Have any idea ?


回答1:


There are two issues here. First, if you really want to make the GridViewPager clickable, you need to tell it to listen for click events - just implementing the OnClickListener interface isn't sufficient. So you need to do something like this:

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
            }
        });

        ...
    }
}

That being said, however, based on your description it sounds like what you actually want is to set up click handlers on individual pages within the grid, not on the entire grid. If so, then you'll need to do something similar but in each page's Fragment class. For example:

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;
    }
}

Note: if you are using CardFragments in your GridViewPager, then you would probably set the OnClickListener in your onCreateContentView override. Otherwise, the above Fragment-based example should apply.



来源:https://stackoverflow.com/questions/26343337/android-wear-gridviewpager-onclick-listener

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!