Android GridView - обновить вид на основе позиции - PullRequest
4 голосов
/ 07 февраля 2010

У меня есть GridView, использующий пользовательский адаптер (myAdapter расширяет BaseAdapter), где каждый элемент в сетке содержит ImageButton. getView () работает нормально.

Однако, как в другом месте моего кода, как я могу обновить изображение (setImageResource) для одного конкретного элемента в сетке на основе его положения в GridView?

Пока что я добавил это в свой класс адаптера:

public void changeImage() {
        Log.d(TAG, "Image change");
        this.ImageButton.setImageResource(R.drawable.newImage);
}

И хотел бы написать что-то вроде этого: mygridview.getItemIdAtPosition(20).changeImage(); (не компилируется).

Ответы [ 3 ]

3 голосов
/ 02 мая 2011

В случае изображений в GridView я сделал это, и это также работает:

gridview.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View imgView, int position, long id) {
    ImageView imageView = (ImageView) imgView;
    imageView.setImageResource(R.drawable.newImage);
        }
    });    }
3 голосов
/ 08 марта 2010

Если вы хотите обновить изображение для одного конкретного элемента в сетке, вы можете ... иметь onClickListener для всех изображений в сетке.

Теперь, когда вы нажмете на любое изображение, найдите его положение и измените фоновый ресурс для этого конкретного изображения.

Пример:

При добавлении изображения: imageView.setOnClickListener (imageListener);

И слушатель будет что-то вроде dis:

private OnClickListener imageListener = new OnClickListener() {
        public void onClick(View v) {
            int id = v.getId();
            ImageView imgView = imageArray.get(id);
            imgView .setBackgroundResource(R.drawable.newImage);
    };

Надеюсь, вы найдете это полезным.

0 голосов
/ 25 октября 2017

Это тоже моя последняя проблема. Здесь мое решение я использую модель данных и адаптер для моего RecyclerView Во-первых, зарегистрируйте ваши новые данные в вашей модели

  DataModel detail = new DataModel(id, name, sat, image);

после этого используйте set для замены старого значения новым

  mData.set(index, detail);

наконец, обновите свой адаптер

  if(adapter!=null)
  adapter.notifyItemChanged(index);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...