#android #listview #landscape
#Android #просмотр списка #пейзаж
Вопрос:
Мое приложение для Android работает в ландшафтном режиме. У меня есть listview, который содержит некоторые элементы. Проблема в том, что setOnItemClickListener вызывается только тогда, когда я нажимаю на название элемента. Я имею в виду, что если я выберу строку, в которой нет имени элемента, элемент не будет выбран, и setOnItemClickListener не вызывается. Что мне делать?
Пожалуйста, помогите мне. Заранее спасибо..
Вот мой код :
MyListView = (ListView) findViewById(R.id.MyListView);
MyListView.setAdapter(new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, playlists));
MyListView.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> arg0, View v, int position,
long id) {
System.out.println("list touch " playlists[position] " si id " idPlaylist[position]);
dialogwait = ProgressDialog.show(Playlist.this, "Loading...","Please wait..", true);
Intent i = new Intent(getBaseContext(), ViewPlaylist.class);
i.putExtra("id",idPlaylist[position]);
i.putExtra("timer",timerPlaylist[position]);
startActivity(i);
finish();
}
});
Комментарии:
1. Есть ли у вас onclicklistener в виджете вашего имени? попробуйте избавиться от него.
2. У меня нет onclicklistener. У меня есть только onitemclicklistener. Я отредактировал свой вопрос с помощью своего кода.
3. я подозреваю, что android.R.layout.simple_list_item_1 имеет текстовое представление с шириной и высотой, установленными в wrap_content
4. simple_list_item_1 — это файл по умолчанию для listview. Я его не создавал
5. Да, проблема была в listview в xml: <ListView android: id=»@ id /MyListView» android:layout_width=»fill_parent» android:layout_height=»wrap_content» />
Ответ №1:
если вы расширяете какой-либо вид для элементов в списке, устанавливая ширину и высоту в XML-макете, чтобы fill_parent
решить вашу проблему,
ну, не используйте android.R.layout.simple_list_item_1
, потому что вы не можете его изменить…
вы можете сделать
MyListView = (ListView) findViewById(R.id.MyListView);
MyListView.setAdapter(new ArrayAdapter<String>(this,
R.layout.mylistitem, playlists));
MyListView.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> arg0, View v, int position,
long id) {
System.out.println("list touch " playlists[position] " si id " idPlaylist[position]);
dialogwait = ProgressDialog.show(Playlist.this, "Loading...","Please wait..", true);
Intent i = new Intent(getBaseContext(), ViewPlaylist.class);
i.putExtra("id",idPlaylist[position]);
i.putExtra("timer",timerPlaylist[position]);
startActivity(i);
finish();
}
});
тогда R.layout.mylistitem может быть
<TextView android:id="@ id/sometitle"
android:layout_width="fill_parent"
android:layout_height="some_height_you_want" />
Комментарии:
1. android.R.layout.simple_list_item_1 — это макет Android, как он может его изменить?
Ответ №2:
чтобы использовать ваш textview вместо R.layout.simple_list_item_1, создайте свой textview и поместите его в
MyListView.setAdapter(новый ArrayAdapter(этот, R.layout.mytextview, плейлисты));
Ответ №3:
Проблема заключалась в том, что у меня было android:layout_width="wrap_content"
в ListView. Это исходный код для ListView :
<ListView android:id="@ id/MyListView"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />