Android: проверка соответствия значений изображения - PullRequest
0 голосов
/ 27 июля 2011

Привет. Я пытаюсь установить проверку, которая проверяет, является ли текущее установленное изображение x, а если x, то делает что-то еще, если y, то выполняет другие действия.

Button sharebtn = (Button)findViewById(R.id.Sharebtn);
    sharebtn.setOnClickListener(
       new View.OnClickListener()
       {
           public void onClick(View view)
           {
             ImageView picture = (ImageView) findViewById(R.id.BTN);
              if (picture.equals(R.drawable.x)){
                  //do really cool stuff
              }else if (picture.equals(R.drawable.y){
                   //do stuff
              }

           }
       });

с этим кодом кнопка просто зависает и ничего не делает. Это не показывает только фокус.

РЕДАКТИРОВАТЬ: больше информации Код для значка избранного. Поэтому, если пользователь находится на странице, отмеченной как избранная, я хочу, чтобы значок был заполненной звездой, а в противном случае - пустой звездочкой. Проблема, с которой я столкнулся, заключается в том, что я хочу, чтобы они могли нажимать на начало, чтобы сделать код, который либо добавляет страницу в избранное, либо удаляет ее. Я подумал, что самый простой способ сделать это - проверить, какой значок в данный момент установлен в oncreate. Значок работает должным образом, поэтому он будет отображаться заполненным, если фавор и висеверса, однако код для его удаления или добавления в фавы (фрагмент сверху) не работает. Я также попробовал:

    ImageView picture = (ImageView) findViewById(R.id.favsBTN);
            java.io.File file = new java.io.File(persistentCarsDir+"/"+vin);
            if (file.exists()) {
                removefavorite();
                picture.setImageResource(R.drawable.nostar);
            }else if(!file.exists()){
                favorite();
                picture.setImageResource(R.drawable.star);
            }

Этот код выше работает ^ у меня просто неверный путь к файлу:)

Ответы [ 4 ]

1 голос
/ 28 июля 2011

Я думаю View.setTag () - это то, что вы хотите сделать. В своем ListAdapter вы создаете объект View для списка.

public View getView(int position, View convertView, ViewGroup parent) {
    View view = < create view here >;
    Object imageLocator = < Enough information to locate the image later >
    view.setTag(imageLocator);
    return view;
}

Затем в onClickListener

public void onClick(View view)
{
    Object imageLocator = view.getTag();
    if (imageLocator != null) {
        // use imageLocator info to find the image
        // do your really cool stuff
    } else {
        // just do other stuff
    }
}
1 голос
/ 27 июля 2011

В вашем коде вы сравниваете изображение с целым числом, которое не будет работать.

Чтобы получить отрисовку ImageView, вы должны вызвать getDrawable. И чтобы получить фактическую отрисовку для идентификатора ресурса, вызовите getResources (). GetDrawable (R.drawable.x) ...

Но, на самом деле, нет никакого способа сравнить рисунки ... Возможно, самый простой способ - использовать метод setTag для просмотра изображений. Таким образом, вы можете установить его тег на «X» или «Y» всякий раз, когда вы меняете его для рисования ...

Тогда проверь метку и реши, что делать ...

EDIT: Или вы используете флажок вместо изображения. Вы можете просто проверить «isChecked», чтобы узнать, был ли он отмечен или не отмечен. Вы можете изменить изображение флажка с помощью «setButtonDrawable», чтобы использовать вашу звезду. И если вы не хотите вручную переключаться между заполненной и незаполненной звездой, используйте нарисованную форму, где вы можете получить заполненную звезду для «отмеченных» и незаполненную звезду для «не отмеченных» ...

надеюсь, это поможет ...

0 голосов
/ 27 июля 2011

R.drawable.x и R.drawable.y являются целыми числами, и вы сравниваете их с ImageView, который всегда возвращает false.

Вам нужно будет преобразовать ваш drawable и ImageView в один и тот же объект, а затем сравнить их.

0 голосов
/ 27 июля 2011

Это не очень хороший способ сделать это, потому что вы пытаетесь сравнить ImageView с int (R.drawable.x на самом деле int).Таким образом, эти два объекта никогда не могут быть равны.Вы также не можете сравнить ImageView с отрисовкой, потому что там не один и тот же объект.Может быть, вы можете немного повысить точность контекста использования, чтобы мы могли попытаться найти решение вашей проблемы?

...