Измените изображение Imageview за пределами просмотра повторного просмотра на элементе просмотра повторного просмотра

1

Я хочу обновить изображение в режиме просмотра изображения одним щелчком мыши на элементе программы повторного просмотра. Ниже я разместил свой скриншот макета:

Изображение 174551

Маленькие изображения отображаются в режиме вторичной переработки, а большое зеленое изображение находится вне области просмотра.

//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) {

        }
    });
}

}

Я хочу, чтобы, когда пользователь щелкнул по любому изображению вида рециркулятора, означало маленькие изображения, оно будет отображаться в виде большого изображения, которое находится за пределами вида рециркулятора.

Теги:
recycler-adapter
android-recyclerview

2 ответа

2

Вы можете использовать интерфейс для обновления выбранного изображения. создать интерфейс в вашем адаптере, например:

 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)
}
  • 0
    спасибо, решил мою проблему.
0

Как сказал Рагхавендра, создайте интерфейсный класс, а затем передайте его внутрь адаптера. Пусть ваша деятельность реализует этот интерфейс и передает вашу активность в адаптер.

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
}
  • 1
    мое приложение потерпело крах после реализации интерфейса, но, увидев ваш адаптер. На клике я понял, что допустил ошибку. Большое спасибо.
  • 0
    отлично для тебя! добро пожаловать

Ещё вопросы

Сообщество Overcoder
Наверх
Меню