Я разрабатываю простое приложение для Android, в котором некоторые элементы отображаются в списке. Пользователь может щелкнуть один из них, что приведет его к дальнейшей деятельности. Основы ...
Но мой OnItemClickListener не вызывается! Я нашел этот очень похожий вопрос , но решение (запретить просмотр элементов списка, чтобы получить фокус) не работает для меня Тем не менее, длинный щелчок ловится - мой OnItemLongClickListener вызывается. Пожалуйста, посмотрите на следующий код и попробуйте сами. Это упрощенная версия моего кода, показывающая ошибочное поведение. Кстати: я использую Andriod SDK 2.0 с Eclipse 3.5.1.
package de.sacherkhoudari.listtest;
import java.util.LinkedList;
import java.util.List;
import android.app.ListActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.AdapterView.OnItemLongClickListener;
public class ListTest extends ListActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
final List<ListEntry> lEntries = new LinkedList<ListEntry>();
for ( int ii = 0; ii < 10; ii++ )
lEntries.add( new ListEntry( "Entry " + ii ) );
setListAdapter( new ArrayAdapter<ListEntry>( this, R.layout.list_item, lEntries ) );
ListView lv = getListView();
lv.setTextFilterEnabled(true);
lv.setOnItemClickListener( new OnItemClickListener() {
public void onItemClick( AdapterView<?> parent, View view, int position, long id ) {
Toast.makeText( ListTest.this, "ItemClick at item " + lEntries.get(position).toString(), Toast.LENGTH_LONG ).show();
}
});
lv.setOnItemLongClickListener( new OnItemLongClickListener() {
public boolean onItemLongClick( AdapterView<?> parent, View view, int position, long id ) {
Toast.makeText( ListTest.this, "ItemLongClick at item " + lEntries.get(position).toString(), Toast.LENGTH_LONG ).show();
return false;
}
});
setContentView(lv);
}
}
class ListEntry {
private String name;
public ListEntry( String s ) {
name = s;
}
public String toString() {
return name;
}
}
Пока что код Java ... вот и макет list_item.xml
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:padding="10dp"
android:textSize="16sp"
android:focusable="false" >
</TextView>
Примечание: android:focusable="false"
не имеет никакого эффекта.
Спасибо!
Захер