Android TextView с выделенной областью в ListView не будет анимировать в первый раз, когда будет показано

У меня есть ListView с пользовательским адаптером. Каждый элемент в нем содержит TextView.

<TextView android:id="@+id/chat_name" android:layout_height="48dp" android:layout_width="match_parent" android:textColor="#FFFFFF" android:gravity="center_vertical" android:ellipsize="marquee" android:marqueeRepeatLimit="marquee_forever" android:singleLine="true" android:focusable="false" android:focusableInTouchMode="false"/> 

Мне нужно, чтобы этот TextView не фокусировался, потому что я полагаюсь на метод onListItemClick() . Как я узнал, onListItemClick() не срабатывает, если вы установите focusable="true" .

В адаптере я установил:

 TextView chatName = (TextView) v.findViewById(R.id.chat_name); chatName.setText(chat.getChatName()); chatName.setSelected(true); 

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

Я уже пытался подклассифицировать TextView с помощью метода, который перезаписывает isFocused() чтобы всегда возвращать true, но это не помогло. Поведение оставалось прежним. Я также экспериментировал с различными значениями focusable и focusableInTouchMode атрибутов, но без успеха.

Пожалуйста, используйте функцию requestFocus () следующим образом.

 chatName.setSelected(true); chatName.requestFocus(); 

Я буду работать.

В свой пользовательский адаптер добавьте это в getView:

 chatName.addOnLayoutChangeListener(new OnLayoutChangeListener() { @Override public void onLayoutChange(View v, ....) { chatName.setSelected(true); } }); 
Intereting Posts