2012-01-02 60 views
4

我想要使用viewpager點擊按鈕點擊一條消息我還想了解如何在viewpager中訪問視圖的更多信息。如何在viewpager中編寫按鈕onClick方法?

我曾嘗試下面的代碼....不工作

public class MyPagerAdapter extends PagerAdapter { 

    @Override 
    public int getCount() { 
     return 3; 
    } 

    @Override 
    public Object instantiateItem(final View collection, final int position) { 
     v = new View(collection.getContext()); 
     LayoutInflater inflater = 
       (LayoutInflater) collection.getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

     int resId = 0; 
     switch (position) { 
     case 0: 
      resId = R.layout.cate1; 
      v = inflater.inflate(R.layout.cate1, null, false); 
      add1 = (Button) v.findViewById(R.id.btnAdd); 
      add1.setOnClickListener(new OnClickListener() { 
       public void onClick(View m) { 
        Toast.makeText(collection.getContext(),"click",Toast.LENGTH_LONG).show(); 
       } 
      }); 


      break; 
     case 1: 
      resId = R.layout.cate2; 
      break; 
     case 2: 
      resId = R.layout.cate3; 
      break; 
     } 

     View view = inflater.inflate(resId, null); 
     ((ViewPager) collection).addView(view, 0); 

     return view; 
    } 

    @Override 
    public void destroyItem(final View arg0, final int arg1, final Object arg2) { 
     ((ViewPager) arg0).removeView((View) arg2); 

    } 

    @Override 
    public boolean isViewFromObject(final View arg0, final Object arg1) { 
     return arg0 == ((View) arg1); 

    } 

    @Override 
    public void finishUpdate(View arg0) { 
     // TODO Auto-generated method stub 

    } 

    @Override 
    public void restoreState(Parcelable arg0, ClassLoader arg1) { 
     // TODO Auto-generated method stub 

    } 

    @Override 
    public Parcelable saveState() { 
     // TODO Auto-generated method stub 
     return null; 
    } 

    @Override 
    public void startUpdate(View arg0) { 
     // TODO Auto-generated method stub 

    } 

    } 

我寫了下面的按鈕代碼的onclick ....不工作..

 v = inflater.inflate(R.layout.cate1, null, false); 
      add1 = (Button) v.findViewById(R.id.btnAdd); 
      add1.setOnClickListener(new OnClickListener() { 
       public void onClick(View m) { 
        Toast.makeText(collection.getContext(),"click",Toast.LENGTH_LONG).show(); 
       } 
      }); 

plz幫助 謝謝提前。

+0

你能詳細說明'我試過下面的代碼....不工作'。什麼不起作用?你會得到什麼錯誤? – Gallal 2012-01-02 08:56:43

+0

add1.setOnClickListener不起作用。 – 2012-01-02 09:12:14

+0

它不會做你想做的事情?或者它什麼都不做?還是會拋出異常?如果它拋出異常,什麼是異常? – Gallal 2012-01-02 11:17:03

回答

3

留下你的代碼都是一樣的,但 變化:

((ViewPager) collection).addView(view, 0); 

    return view; 

((ViewPager) collection).addView(v, 0); 

    return v; 

你做的onclick權上被膨脹的按鈕,那麼你充氣iwth渣油另外的看法,渲染它在屏幕上,該按鈕存在於你的應用程序的內存中,但沒有其他地方,通過返回v,該按鈕被繪製,onclicklistener被點擊調用。

+1

也許https://github.com/Shereef/ViewPagerPlusExpandableList可以幫助你理解viewpager更多 – 2012-01-02 20:55:51

+1

感謝很多人,它工作得很好......! – 2012-01-03 07:13:30

相關問題