3
pager.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> arg0, View arg1, int position,long id) {  

public void restoreState(Parcelable state, ClassLoader loader) {
}
public Parcelable saveState() {
return null;
}

public void startUpdate(View container) {
}
}
}
4

1 回答 1

19

在 instantiateItem() 内的图像上设置监听器:

        @Override
        public Object instantiateItem(View collection, int position) {
            final LayoutInflater inflater = getLayoutInflater(); 
            View layout = inflater.inflate(R.layout.my_layout, null);
            final ImageView image = (ImageView)layout.findViewById(R.id.image_display);
            final int cPos = position;
            image.setOnClickListener(new OnClickListener()
            {
                @Override
                public void onClick(View v)
                {
                    ImageView i = (ImageView)v;
                    if(cPos == 0)
                    {
                        //...
                    }
                    //...

                }
            });

            return layout;
        }

或者,您可以使用该ImageView.setTag()方法包含有关要启动的 Activity 的数据。例如

if(position == 0) image.setTag("com.blah.android.SomeActivity");
if(position == 1) image.setTag("com.blah.android.AnotherActivity");
//...

而上面的 onClick() 内部有这个:

ImageView i = (ImageView)v;
String activityClassName = (String)i.getTag();   // Get the info we stored in the tag.
MyActivity.this.startActivity((new Intent()).setClassName(MyActivity.this, activityClassName));

请注意,这里实际上不需要转换为 ImageView,因为getTag()它是View. 您也不需要为每个 ImageView 使用单独的 OnClickListener。您可以只创建一个 OnClickListener 实例,该实例如上抓取标签数据,并启动适当的活动。在里面的每个 ImageView 上设置这个 OnClickListener instantiateItem()

PS 我强烈建议,如果您正在下载图像,请查看一些为 Android 编写的图像下载器。例如 https://github.com/nostra13/Android-Universal-Image-Loader

于 2012-10-10T07:03:06.353 回答