2013-03-08 3 views
0

У меня есть пользовательский селектор для элементов ListView. Это то, на что это похоже:Элемент ListView Нажмите программную клавишу Click/Tap

<item android:drawable="@color/transparent" android:state_activated="false"/> 
<item android:drawable="@color/blue" android:state_activated="true"/> 

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


На самом деле, что я действительно хочу, чтобы изменить цвет фона строки (по аналогии с тем, когда он постучал) без стрельбы onListItemClick().

ответ

2

Я хочу это сделать «нажав» с помощью кода

Извлекает строку, которую вы хотите (он должен быть на экране) и вызвать performClick() или, возможно, вы можете использовать setActivated(true) (я никогда попробовал этот метод.)

+0

Но performclick() не принимает положение строки в качестве параметра. Я попробовал performItemClick(), но я просто вызываю свой onListItemClickListener без изменения фона. Я также попробовал setActivated (true), но все равно никакого эффекта. – user1923613

+0

Попробуйте 'listView.setItemChecked (position, true);' – Sam

+0

все еще не работает: < – user1923613

0

Что делать, если вы попытались эмулировать событие касания? Может быть, не самый чистый ответ, но ...

Получить вид вашей нужной строки в то звоните

rowView.dispatchTouchEvent(MotionEvent.obtain(SystemClock.uptimeMillis(), SystemClock.uptimeMillis(), MotionEvent.ACTION_DOWN, 0, 0, 0)); 
0

Изменить селектор для переключения на android:state_selected="true", а затем использовать listView.setSelection(index);

+0

Как изменить селектор для переключения? – user1923613

+0

'' '' –