Выделить выделенный вид - случайное изменение вида при прокрутке - PullRequest
2 голосов
/ 06 октября 2011

Что я пытался


Привет, ребята, я создал GridView, который заполнил свою базу данных.Теперь я сделал onItemClickListner из учебника Google GridView.Теперь я попытался сделать это, когда пользователь нажимает на изображение в GridView, оно остается выделенным и получает цвет фона, чтобы пользователь видел, какое изображение он выбрал.Но именно это не работает так, как должно.Я сделал If с логическим значением, которое всегда, когда пользователь нажимает на следующее представление, что старое представление снова становится прозрачным, а новое нажатое представление получает цвет фона.Но после того, как я выбрал вид, я прокручиваю вверх и вниз.Подсвеченный вид иногда изменяется в случайном порядке.

Вопрос


Поэтому мой вопрос заключается в том, что мне нужно изменить в моем onItemClickListner, чтобы это случайное изменение вида прекратилось (?), Я не нашел способ сделать это.И есть ли более простой способ выделить выбранный вид?Для понимания «выбранный вид» = пользователь нажимает на него, чем его выбранный и должен быть выделен.

код


Вот код моего onItemClickListner:

    //Hier wird die Grindview gefüllt
    final GridView gridview = (GridView) findViewById(R.id.SmileyGrind);
    gridview.setAdapter(new ImageAdapter(this, info));


    //Hier wird gemerkt welches bild
    gridview.setOnItemClickListener(new OnItemClickListener() {

boolean color = false;
View vv;


        public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
            Toast.makeText(SFilterConfigActivity.this, "" + position, Toast.LENGTH_SHORT).show();
           // gridview.setSelection(position);

            if ( color == false){
                v.setBackgroundColor(0xFF00FF00);
                vv = v;
                color = true;

            }
            else {
                vv.setBackgroundColor(0x00000000);
                v.setBackgroundColor(0xFF00FF00);
                vv = v;


            }


        }      
    });

Спасибо за помощь в Advance!

1 Ответ

4 голосов
/ 06 октября 2011

У меня была такая же проблема, но она была с ListView. Следуйте этому, он будет работать и для GridView.

if(position == grid.getSelectedItemPosition())
   holder._linear.setBackgroundColor(Color.GRAY);           
else  
   holder._linear.setBackgroundColor(Color.BLACK);

и получите Родительский Макет, который вы используете для GridView и onClickметод макета просто добавьте это.

 holder._linear.setBackgroundColor(Color.GRAY); 

Это изменит цвет фона макета, и приведенный выше код решит вашу случайную фоновую проблему.

...