Выбор элемента ListView - PullRequest
       20

Выбор элемента ListView

0 голосов
/ 04 октября 2011

У меня есть ListView с пользовательскими элементами списка.Каждый элемент списка состоит из 2 линейных макетов, расположенных рядом друг с другом.LinearLayout 1 |LinearLayout 2 |

Я объявил рисования списка состояний для обоих LinearLayout, где в state_pressed я меняю фон LinearLayout.

И тут возникает проблема - Когда пользователь нажимает наLinearLayout2 должен быть изменен только фон LinearLayout2, фон LinearLayout1 должен остаться неизменным.С другой стороны, когда пользователь нажимает на LinearLayout1, только фон LinearLayout1 должен быть изменен.Но теперь, когда пользователь нажимает на любой из LinearLayout, они оба меняют свой фон.

Поведение при нажатии на LinearLayout2 должно быть таким же, как onListItemClick (), в то время как когда пользователь нажимает на LinearLayout1, должно появиться диалоговое окно (еслиэто имеет значение).

Есть идеи, как решить проблему изменения фона?Я пытался играть с фокусируемыми и кликабельными параметрами.Если я установил clickable = true для обоих LinearLayouts, дочерние элементы (TextViews) LinearLayout2 не изменят свой цвет (TextViews должны изменить свой цвет текста).

Спасибо!

Ответы [ 2 ]

0 голосов
/ 04 октября 2011

Ну, я думаю, что единственное решение, если вы используете BaseAdapter как extends

Сначала присвойте уникальный идентификатор обоим макетам в вашем XML-файле и добавьте

android:clickable="true"

В своем методе

 public View getView(int position, View convertView, ViewGroup parent) {

когда вы получаете такие представления, как

 holder.layout1_name=(LinearLayout)view.findViewById(R.id.layout1);
 holder.layout1_name.setOnClickListener( clicklayout1);
 holder.layout2_name=(LinearLayout)view.findViewById(R.id.layout2);
holder.layout2_name.setOnClickListener( clicklayout2);

Добавить прослушиватель кликов по ним

private OnClickListener clicklayout1 = new OnClickListener() {
    public void onClick(View v) {

         //Do what you want to do here
    }
};


private OnClickListener clicklayout2 = new OnClickListener() {
    public void onClick(View v) {

         //Do what you want to do here
    }
};

Может быть, это может помочь вам

0 голосов
/ 04 октября 2011

Это связано с тем, что при использовании представления списка необходимо изменить некоторые теги в XML, чтобы сделать фон прозрачным, чтобы он правильно работал на заднем плане.

Добавьте это в свой XML-код ListView.

android:cacheColorHint="#00000000"

Чтобы сделать фон ListView прозрачным.

...