我正在使用 TouchImageView 在全屏幕中加载图像,并具备缩放/捏合能力。
这些图像是通过Web服务从URL获取的。响应以JSON格式返回。在此部分中,我正在使用Volley + GSON获取响应并使用自定义适配器填充Pager。
最初,这些图像是显示在ListView中的。当用户点击某个项目时,它将全屏显示所选项目。
然而,在我的情况下,这并没有发生。无论用户选择哪个位置,它都会显示索引0处的图像。
以下是我的操作方法:
在该适配器中,用户将单击项目,并将位置传递给另一个活动。
在
这些图像是通过Web服务从URL获取的。响应以JSON格式返回。在此部分中,我正在使用Volley + GSON获取响应并使用自定义适配器填充Pager。
最初,这些图像是显示在ListView中的。当用户点击某个项目时,它将全屏显示所选项目。
然而,在我的情况下,这并没有发生。无论用户选择哪个位置,它都会显示索引0处的图像。
以下是我的操作方法:
在该适配器中,用户将单击项目,并将位置传递给另一个活动。
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);
}
}
}
在
PhotoGalleryActivity
中,将会加载所有的图片,但不会从用户选择的项目开始。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);
}
...
}