Я хочу обновить изображение в режиме просмотра изображения одним щелчком мыши на элементе программы повторного просмотра. Ниже я разместил свой скриншот макета:
Маленькие изображения отображаются в режиме вторичной переработки, а большое зеленое изображение находится вне области просмотра.
//my recycler view adapter code
Context mContext;
List<imgModel> mImgModelList;
String imgUrl;
public imageListAdapter(Context context, List<imgModel> imgModelList) {
mContext = context;
mImgModelList = imgModelList;
}
@NonNull
@Override
public imgListHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
LayoutInflater inflater = LayoutInflater.from(mContext);
View view = inflater.inflate(R.layout.img_card,viewGroup,false);
imgListHolder imgListHolder = new imgListHolder(view);
return imgListHolder;
}
@Override
public void onBindViewHolder(@NonNull imgListHolder imgListHolder, int i) {
final imgModel current = mImgModelList.get(i);
imgUrl = mImgModelList.get(0).getImgUrl();
Picasso.get().load(current.getImgUrl()).into(imgListHolder.mImageView);
imgListHolder.mImageView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
imgUrl = current.getImgUrl();
}
});
}
@Override
public int getItemCount() {
return mImgModelList.size();
}
class imgListHolder extends RecyclerView.ViewHolder{
ImageView mImageView;
public imgListHolder(@NonNull View itemView) {
super(itemView);
mImageView = (ImageView)itemView.findViewById(R.id.singleimg);
}
}
}//это класс активности
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_image_list_);
final Intent myIntent = getIntent();
final String cateGory = myIntent.getStringExtra("Category");
String subCategory = myIntent.getStringExtra("subCategory");
mRelativeLayout = (RelativeLayout)findViewById(R.id.imgListLayout);
selectedImage =(ImageView)findViewById(R.id.selectedImg);
//mToolbar =(Toolbar)findViewById(R.id.toolbar);
mRecyclerView = (RecyclerView)findViewById(R.id.imglistRecycler);
//mToolbar.inflateMenu(R.menu.menu);
data = new ArrayList<>();
myRef.child(cateGory).child(subCategory).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
for (DataSnapshot category : dataSnapshot.getChildren()) {
if (category.child("like").exists()) {
imgModel temp = new imgModel(category.child("imgUrl").getValue().toString(), category.child("views").getValue().toString(),
category.child("like").getValue().toString(), category.child("share").getValue().toString());
data.add(temp);
}
mImageListAdapter = new imageListAdapter(imageList_Activity.this,data);
mRecyclerView.setAdapter(mImageListAdapter);
mRecyclerView.setLayoutManager(new GridLayoutManager(imageList_Activity.this,3));
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
}
Я хочу, чтобы, когда пользователь щелкнул по любому изображению вида рециркулятора, означало маленькие изображения, оно будет отображаться в виде большого изображения, которое находится за пределами вида рециркулятора.
Вы можете использовать интерфейс для обновления выбранного изображения. создать интерфейс в вашем адаптере, например:
interface UpdateImage{
void updateImageUrl(String imageurl);
}
Теперь внедрите этот интерфейс в свою деятельность. При настройке вашего адаптера просто добавьте новый imageListAdapter (imageList_Activity.this, data, this);
Теперь на клик по пункту просто позвони
imgListHolder.mImageView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
imgUrl = current.getImgUrl();
updateImage.updateImageUrl(current.getImgUrl())
}
});
В своей деятельности, когда вы реализуете вышеуказанный интерфейс, вы получите переопределенный метод updateImageUrl. Вы можете обновить вид изображения с помощью этого URL.
@Override
public void updateImageUrl(String imageurl) {
Glide.with(this).load(imageUrl).into(imageView)
}
Как сказал Рагхавендра, создайте интерфейсный класс, а затем передайте его внутрь адаптера. Пусть ваша деятельность реализует этот интерфейс и передает вашу активность в адаптер.
Interface OnClick{
public void clickAction()
}
//your adapter class
Adapter {
//your interface
public OnClick onclick;
//set your imageview click activity
imageView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
onClick.click;
}});
//now pass your interface from activity
ImageListActivity implements OnClick {
//pass to your adapter
adapter.onClick = this
}