gpt4 book ai didi

java - 使用解析图像从 Gridview 到 ViewPager

转载 作者:太空宇宙 更新时间:2023-11-04 13:47:46 25 4
gpt4 key购买 nike

请帮忙。我正在寻求将 viewpager 应用到 Gridview 的详细 View 。当您使用本地镜像时,有在线教程,但我想使用从 Parse.com 检索的图像,但我遇到了困难。

主要 fragment :

public class GalleryActivity extends Activity {
private GridView gridView;
private GridViewAdapter gridAdapter;
private int columnWidth;

GridViewAdapter urgentTodosAdapter;



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

final ParseQueryAdapter<ParseObject> mainAdapter;

gridView = (GridView) findViewById(R.id.gridView);

urgentTodosAdapter = new GridViewAdapter(this);
gridView.setAdapter(urgentTodosAdapter);

gridView.setOnScrollListener(new SampleScrollListener(this));


gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

ParseObject todo = urgentTodosAdapter.getItem(position);


String about = todo.getString("comment");
ParseFile image = todo.getParseFile("image"); //getParseFile() is a method of ParseObject
String imageUrl = image.getUrl();


Intent intent = new Intent("com.package.name.DetailsActivity");

intent.putExtra("id", position);



intent.putExtra("about",about);
intent.putExtra("position",position);

intent.putExtra("image",imageUrl); //pass along imageUrl
startActivity(intent);

}

});
}

GridViewAdapter:

 public class GridViewAdapter extends ParseQueryAdapter<ParseObject> {

ProgressBar progressBar;

ParseImageView todoImage;

String what;


protected ImageLoader imageLoader;

public GridViewAdapter(Context context) {

super(context, new ParseQueryAdapter.QueryFactory<ParseObject>() {
public ParseQuery create() {


ParseQuery query = new ParseQuery("WallImageObject");
// query.whereEqualTo("highPri", true);
query.orderByDescending("createdAt");
// query.setLimit(1000);
return query;
}
});
}


public long getItemId(int position) {
return 0;
}



@Override
public View getItemView(ParseObject object, View v, ViewGroup parent) {

ViewHolder viewHolder;

imageLoader = ImageLoader.getInstance();
imageLoader.init(ImageLoaderConfiguration.createDefault(getContext()));


if (v == null) {
v = View.inflate(getContext(), R.layout.photoisgallery, null);
viewHolder = new ViewHolder();

viewHolder.image = (ParseImageView) v.findViewById(R.id.image);

v.setTag(viewHolder);
} else {
viewHolder = (ViewHolder) v.getTag();
}



ParseFile imageFile = object.getParseFile("image");
if (imageFile != null) {


if (viewHolder.image.getTag() == null ||
!viewHolder.image.getTag().equals(imageFile.getUrl())) {

imageLoader.getInstance().displayImage(imageFile.getUrl(), viewHolder.image, new SimpleImageLoadingListener());
viewHolder.image.setTag(imageFile.getUrl());
}


}


return v;
}


private static class ViewHolder {
ParseImageView image;
TextView title;
}

UDAPTED:DetailsActivity:根据位置单击,重新调整同一图像三次。

 public class DetailsActivity extends Activity {

private static Context context;
private ViewPager pager;

public static int position;

private TouchImageView image;

public static String pic;

Intent getPic;






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


// get intent from GalleriesFragment - get selected image
getPic = getIntent();
// get image
pic = getPic.getStringExtra("image");
// get position to open image tapped and display in the pager
position = getPic.getExtras().getInt("id");

Log.d("position = ", +position + "");


pager = (ViewPager) findViewById(R.id.pager);
SwipeImageAdapter swipeAdapter = new SwipeImageAdapter();
pager.setAdapter(swipeAdapter);
pager.setCurrentItem(position);

}



@Override
public void finish() {

super.finish();
}

private class SwipeImageAdapter extends PagerAdapter {
private int[] images = new int[] {
R.drawable.ic_danger,
R.drawable.ic_4,
R.drawable.ic_beycd
};

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

// return GalleryActivity.todo.g


}

Object getItem(int position){

return position;
}



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

@Override
public Object instantiateItem(ViewGroup container, int position) {
Context context = DetailsActivity.this;


ImageView imageView = new ImageView(context);
imageView.setScaleType(ImageView.ScaleType.FIT_XY);
// imageView.setImageResource(images[position]);

String url = getPic.getStringExtra("image"); //get the url String


Picasso.with(context).load(url)
.noFade()
.into(imageView);


((ViewPager) container).addView(imageView, 0);
return imageView;
}

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

最佳答案

为了实现您想要的行为,您需要向 PagerAdapter 提供要显示的项目列表。您可以通过创建如下所示的构造函数来做到这一点:

public SwipeImageAdapter(Context context, ArrayList<Image> data) {
this.mContext = context;
this.mData = data;
}

然后使用mData将数据填充到您的itemView(instantiateItem方法)

请记住在DetailsActivity中将setCurrentItem设置为您的寻呼机

关于java - 使用解析图像从 Gridview 到 ViewPager,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30662618/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com