Android Viewpager中的setCurrentItem不';t工作
我正在创建一个图库应用程序,并使用viewpager显示照片 图像列表的类Android Viewpager中的setCurrentItem不';t工作,android,android-studio,android-viewpager,Android,Android Studio,Android Viewpager,我正在创建一个图库应用程序,并使用viewpager显示照片 图像列表的类 import android.content.Context; import android.content.Intent; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.support.v7.widget.GridLayoutManager; import android.support
import android.content.Context;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.GridLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import java.util.ArrayList;
public class FotosList extends AppCompatActivity {
public static FotosList m;
private final Integer image_ids[] = {
R.drawable.foto1,
R.drawable.foto2,
R.drawable.foto3,
R.drawable.foto4,
R.drawable.foto5,
R.drawable.foto6,
R.drawable.foto8,
R.drawable.foto9,
R.drawable.foto10,
R.drawable.foto11,
R.drawable.foto12,
R.drawable.foto13,
R.drawable.foto14,
R.drawable.foto15
};
@Override
protected void onCreate(Bundle savedInstanceState) {
m=this;
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_fotos_list);
RecyclerView recyclerView = (RecyclerView)findViewById(R.id.imagegallery);
recyclerView.setHasFixedSize(true);
RecyclerView.LayoutManager layoutManager = new GridLayoutManager(getApplicationContext(),2);
recyclerView.setLayoutManager(layoutManager);
ArrayList<CreateList> createLists = prepareData();
MyAdapter adapter = new MyAdapter(getApplicationContext(), createLists);
recyclerView.setAdapter(adapter);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
finish();
return true;
}
public class CreateList {
private String image_title;
private Integer image_id;
public Integer getImage_ID() {
return image_id;
}
public void setImage_ID(Integer android_image_url) {
this.image_id = android_image_url;
}
}
private ArrayList<CreateList> prepareData(){
ArrayList<CreateList> theimage = new ArrayList<>();
for(int i = 0; i< image_ids.length; i++){
CreateList createList = new CreateList();
createList.setImage_ID(image_ids[i]);
theimage.add(createList);
}
return theimage;
}
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> {
private ArrayList<CreateList> galleryList;
private Context context;
public MyAdapter(Context context, ArrayList<CreateList> galleryList) {
this.galleryList = galleryList;
this.context = context;
}
@Override
public MyAdapter.ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.cell_layout, viewGroup, false);
return new ViewHolder(view);
}
@Override
public void onBindViewHolder(MyAdapter.ViewHolder viewHolder,final int i) {
viewHolder.img.setScaleType(ImageView.ScaleType.CENTER_CROP);
viewHolder.img.setImageResource((galleryList.get(i).getImage_ID()));
viewHolder.img.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent in = new Intent(FotosList.m, Fotos.class);
in.putExtra("img",galleryList.get(i).getImage_ID());
m.startActivity(in);
}
});
}
@Override
public int getItemCount() {
return galleryList.size();
}
public class ViewHolder extends RecyclerView.ViewHolder{
private TextView title;
private ImageView img;
public ViewHolder(View view) {
super(view);
title = (TextView)view.findViewById(R.id.title);
img = (ImageView) view.findViewById(R.id.img);
}
}
}
}
单击照片打开带有图像的viewpager。。。
他打开最后一张照片。。。
如何打开单击的图像这是您的问题-
viewHolder.img.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent in = new Intent(FotosList.m, Fotos.class);
in.putExtra("img",galleryList.get(i).getImage_ID());
m.startActivity(in); // What is m??
}
});
in.putExtra(“img”,galleryList.get(i.getImage_ID())
您正在使用imageId
即resourceID作为附加项传递,而您需要在适配器中找到映像的位置。
而是做一些类似-viewHolder.img.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent in = new Intent(FotosList.m, Fotos.class);
in.putExtra("img", getAdapterPosition()); // getAdapterPosition() will return position of current view
context.startActivity(in); // What is m?? use context instead
}
});
在onClickViewPager中,只需将单击项目的位置传递给第二个活动
viewHolder.img.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent in = new Intent(FotosList.m, Fotos.class);
in.putExtra("img",i);
m.startActivity(in);
}
});
工作!非常感谢!不客气。
viewHolder.img.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent in = new Intent(FotosList.m, Fotos.class);
in.putExtra("img",i);
m.startActivity(in);
}
});