андроид ребенок смотреть нет состояние прессы - PullRequest
4 голосов
/ 16 января 2012

Я сделал линейный макет, на котором я добавляю представления, имитируя таблицу, потому что я прочитал, что просмотр списка внутри просмотра прокрутки не вариант :) Так что у меня есть линейный макет с wrap_content внутри просмотра прокрутки.

Проблема в том, что при добавлении представлений, которые я добавляю, я не могу вызвать какое-либо состояние пресса, чтобы изменить графику, как раньше, когда оно было в просмотре списка, оно работало отлично.

У меня есть следующее:

    if (arrayWorksWith.size()!=0)
    {
        this.listAdapter = new WorksWithListAdapter(this, R.layout.works_with_cell, R.id.lblItemTitle, arrayWorksWith);

        for (int i=0; i<arrayWorksWith.size(); i++)
        {
            View v = this.listAdapter.getView(i, null, layoutTblWorksWith);
            v.setTag(new Integer(1000 + arrayWorksWith.get(i).getId()));
            v.setOnClickListener(this);

            layoutTblWorksWith.addView(v);
        }
    }

Проблема в том, что событие click срабатывает, но у меня нет визуальной обратной связи.Внутри этого представления у меня есть ImageView с заданным фоном для рисования:

<?xml version="1.0" encoding="utf-8"?> 

<selector xmlns:android="http://schemas.android.com/apk/res/android">     

<item android:state_pressed="true" android:drawable="@drawable/r1" /> <!-- pressed -->     
<item android:state_focused="true" android:drawable="@drawable/r1" /> <!-- focused -->
<item android:drawable="@drawable/transparent_background" /> <!-- default --> 

</selector>

Также я только что попробовал сенсорный прослушиватель на добавляемом мною представлении, но это тоже не получается: (*

                v.setOnTouchListener(new OnTouchListener()
                {
                     public boolean onTouch (View v, MotionEvent event)
                     {
                         TextView lblCategoryTitle = (TextView)v.findViewById(R.id.lblItemTitle);                       

                         if(event.getAction() == MotionEvent.ACTION_DOWN)
                         {
                             lblCategoryTitle.setTextColor(R.color.white);
                         }
                         else if (event.getAction() == MotionEvent.ACTION_UP)
                         {
                             lblCategoryTitle.setTextColor(R.color.textLabel_blue);
                         }

                         return false;
                     }
                });

Поэтому, когда этот код находился внутри ListView, когда я нажимал на ячейку, изображение меняло фон, давая визуальную обратную связь, но когда я его сейчас создаю и добавляю в LinearLayout, оно перестало работать.

Есть идеи? Я пытался поиграть с фокусируемым, кликабельным, дублирующим родительским состоянием, но безуспешно.

1 Ответ

0 голосов
/ 25 ноября 2012

Вы должны установить listView на OnItemClickListener, а не на OnClickListener.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...