ViewPager SetCurrentItem ne permet pas de définir la position après il est cliqué

Je suis en utilisant TouchImageView charger les images en plein écran et d'avoir de zoom/pincée de capacité.

Les images sont extraites à partir de l'URL par l'intermédiaire d'un service web. La réponse est en JSON. Dans cette partie, je suis en utilisant Volley+GSON pour obtenir la réponse et l'utilisation d'un adaptateur personnalisé pour remplir le Pager.

D'abord, les images sont affichées dans une liste. Lorsqu'un utilisateur clique sur un élément, il faudra passer en plein écran montrant l'élément choisi.

Cependant, dans mon cas, cela n'arrive pas. Quelle que soit la position que l'utilisateur a choisi, il continue à afficher l'image à l'indice 0.

Voici comment je le fais:

Dans cette carte, l'utilisateur va cliquer sur un élément et il va passer la position à une autre activité.

public class ItemPhotoAdapter extends BaseAdapter {
private ArrayList<ItemImageModel> arrItemImage;
@Override
public ItemImageModel getItem(int i) {
return arrItemImage.get(i);
}
...
@Override
public View getView(int i, View view, ViewGroup viewGroup) {
ViewHolder vh;
lf = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
if(view == null){
vh = new ViewHolder();
view = lf.inflate(R.layout.row_photo_grid, null);
vh.item_image = (ImageView) view.findViewById(R.id.img_item);
view.setTag(vh);
} else {
vh = (ViewHolder) view.getTag();
}
ItemImageModel iim = arrItemImage.get(i);
Picasso.with(context) //
.load(iim.getResized()) //
.placeholder(R.drawable.placeholder) //
.error(R.drawable.error)
.into(vh.item_image);
vh.item_image.setOnClickListener(new OnImageClickListener(i));
return view;
}
...
private class OnImageClickListener implements View.OnClickListener {
int _position;
public OnImageClickListener(int position) {
this._position = position;
}
@Override
public void onClick(View view) {
Intent i = new Intent(context, PhotoGalleryActivity.class);
i.putExtra("position", _position);
context.startActivity(i);
}
}
}

Dans PhotoGalleryActivity, va charger toutes les images en arrière, mais il ne démarre pas avec l'élément que l'utilisateur a choisi.

public class PhotoGalleryActivity extends FragmentActivity {
private ArrayList<ItemImageModel> arrItemImages;
...
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_photo_gallery);
ViewPager mViewPager = (ViewPager) findViewById(R.id.pager);
pb = (ProgressBar) findViewById(R.id.loading);
ActionBar actionBar = getActionBar();
actionBar.setDisplayHomeAsUpEnabled(true);
arrItemImages = new ArrayList<ItemImageModel>();
Intent i = getIntent();
final int position = i.getIntExtra("position", 1);
user_id = i.getStringExtra("user_id");
item_id = i.getStringExtra("item_id");
//       Log.d(TAG, "Image position: " + position);
mAdapter = new PhotoGalleryAdapter(arrItemImages, getApplicationContext(), this);
mViewPager.setAdapter(mAdapter);
mViewPager.setCurrentItem(position);
//ViewPagerIndicator
CirclePageIndicator titleIndicator = (CirclePageIndicator)findViewById(R.id.titles);
titleIndicator.setViewPager(mViewPager);
loadPhotos();
}
...
private void loadPhotos() {
mRequestQueue = Volley.newRequestQueue(this);
String url = Constants.ITEM_DETAILS;
GsonRequest<ItemDetailContainer> myReq = new GsonRequest<ItemDetailContainer>(
Request.Method.GET, url, ItemDetailContainer.class,
createMyReqSuccessListener(), createMyReqErrorListener());
mRequestQueue.add(myReq);
}
...
}

OriginalL'auteur Emen | 2014-02-28