2012-10-10 52 views
2
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) { 
} 
} 
} 

回答

18

設置監聽器的圖像內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()方法包括什麼活動,推出數據。例如

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實例,該實例像上面那樣獲取標籤數據,並啓動相應的活動。在instantiateItem()內的每個ImageView上設置此OnClickListener。

P.S.如果您正在下載圖片,我強烈建議您查看一些爲Android編寫的圖片下載程序。例如 https://github.com/nostra13/Android-Universal-Image-Loader

+0

但是,如何判斷哪個圖像被點擊?你不應該添加「if(position == 0)」之類的東西嗎? –

+0

「public void onClick(View v)」中的「v」是被點擊的圖像。每個ImageView上直接設置一個新的OnClickListener。 –

+0

你能寫出整個樣本,如何申請,如果點擊了圖片1,我希望它打開Activity1,或者如果點擊了圖片2,我希望它打開Activity2。我應該把它放在我的代碼上嗎? –