2014-04-10 84 views
2

我是Android編程新手。我有一個圖片庫,當我點擊一個圖片時,應該會出現一個帶有全屏圖像和標題的ViewPager,我可以滑動整個圖庫。我遵循本教程enter link description here唯一的區別是我的圖像也存儲在數組中,標題。當我運行應用程序時,畫廊顯示,但Viewpager是空的,不滑動。我沒有錯誤,我不知道什麼應該是錯的。感謝提前:)帶有標題的圖像Android Viewpager

FullScreenImageAdapter.java

package com.example.sherlockholmes.images; 

import android.app.Activity; 
import android.content.Context; 
import android.support.v4.view.PagerAdapter; 
import android.support.v4.view.ViewPager; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.Button; 
import android.widget.ImageView; 
import android.widget.RelativeLayout; 
import android.widget.TextView; 

import com.example.sherlockholmes.R; 

public class FullScreenImageAdapter extends PagerAdapter { 

    private Activity context; 
    private LayoutInflater inflater; 
    private int _position; 
    private Integer[] mThumbIds; 
    private String[] description; 

    public FullScreenImageAdapter(Activity context,Integer[] mThumbIds,String[] description){ 
     this.context=context; 
     this.mThumbIds = mThumbIds; 
     this.description = description; 
    } 


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


    @Override 
    public boolean isViewFromObject(View view, Object object) { 
     return view == ((RelativeLayout) object); 
    } 

    @Override 
    public Object instantiateItem(ViewGroup container, int position) { 


     inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     View viewLayout = inflater.inflate(R.layout.layout_fullscreen_image, container, 
       false); 

     ImageView imageView = (ImageView) viewLayout.findViewById(R.id.full_image); 
     TextView textview = (TextView) viewLayout.findViewById(R.id.item_text); 
     Button btnClose = (Button) viewLayout.findViewById(R.id.btnClose); 
     imageView.setImageResource(mThumbIds[_position]); 
     textview.setText(description[_position]); 

     btnClose.setOnClickListener(new View.OnClickListener() {    
      @Override 
      public void onClick(View v) { 
       context.finish(); 
      } 
     }); 

     ((ViewPager) container).addView(viewLayout,0); 

     return viewLayout; 
    } 

    @Override 
    public void destroyItem(ViewGroup container, int position, Object object) { 
     ((ViewPager) container).removeView((RelativeLayout) object); 

    } 

} 

FullScreenViewActivity.java

package com.example.sherlockholmes.images; 

import android.app.Activity; 
import android.content.Intent; 
import android.os.Bundle; 
import android.support.v4.view.ViewPager; 

import com.example.sherlockholmes.R; 

public class FullScreenViewActivity extends Activity{ 


    private FullScreenImageAdapter adapter; 
    private ViewPager viewPager; 

    private Integer[] mThumbIds = { 
       R.drawable.acd1, R.drawable.acd1, 
       R.drawable.acd1, R.drawable.acd1, 
       R.drawable.acd1, R.drawable.acd1, 
       R.drawable.acd1, R.drawable.acd1, 
     }; 

     private String[] description={ 
       "apple","pinaple","rose","strawberry", 
       "orange","lemon","potato","banana" 
     }; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_fullscreen_view); 

     viewPager = (ViewPager) findViewById(R.id.pager); 


     Intent i = getIntent(); 
     int position = i.getIntExtra("position", 0); 

     adapter = new FullScreenImageAdapter(FullScreenViewActivity.this,mThumbIds,description); 

     viewPager.setAdapter(adapter); 

     // displaying selected image first 
     viewPager.setCurrentItem(position); 
    } 
} 

回答

2

嘗試,而不是這個

@Override 
public int getCount() { 
    return mThumbIds.length; 
} 

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

FullScreenImageAdapter

並更改該

@Override 
public void destroyItem(ViewGroup container, int position, Object object) { 
    ((ViewPager) container).removeView((RelativeLayout) object); 

} 

隨着

@Override 
public void destroyItem(ViewGroup container, int position, Object object) { 
    ((ViewPager) container).removeView((View) object); 
} 

,改變這個

@Override 
public boolean isViewFromObject(View view, Object object) { 
    return view == ((RelativeLayout) object); 
} 

隨着

@Override 
public boolean isViewFromObject(View view, Object object) { 
    return view == ((View) object); 
} 

更新:還需要becoz你還沒有初始化_position改變這種

imageView.setImageResource(mThumbIds[_position]); 
    textview.setText(description[_position]); 

隨着

imageView.setImageResource(mThumbIds[position]); 
    textview.setText(description[position]); 
FullScreenImageAdapter。它的

,這就是爲什麼視尋呼機總是獲取圖像和從位置0陣列的標題。

+0

謝謝:)。它解決了我的問題,但我有另一個問題。無論我在圖庫中按什麼圖像,都會顯示陣列中的第一張圖像和第一個文本。所有Viewpage都是一樣的。 – Madalina

+0

@ user3521458看到我的更新並按照更改。 –

+0

非常感謝。我不能相信我沒有看到:) – Madalina