ListView z onitemclicklistener android
Używam niestandardowego ListView
z RatingBar
i ImageButton
. Oto mój problem: kiedy klikam na my ListView
, my OnItemClickListener
nie działa. Proszę, czy ktoś może mi pomóc.
Kod:
ListView lv = getListView();
setContentView(lv);
lv.setOnItemClickListener(new OnItemClickListener()
{
@Override
public void onItemClick(AdapterView<?> arg0, View arg1,int position, long arg3)
{
Toast.makeText(SuggestionActivity.this, "" + position, Toast.LENGTH_SHORT).show();
}
});
Z góry dzięki!
15 answers
Choć bardzo stare pytanie, ale nadal zamieszczam na nie ODPOWIEDŹ, aby mogło komuś pomóc. Jeśli używasz dowolnego układu wewnątrz widoku listy, użyj ...
android:descendantFocusability="blocksDescendants"
... na pierwszym układzie nadrzędnym wewnątrz listy. To działa jak magia kliknięcie nie zostanie zużyte przez żaden element wewnątrz listy, ale będzie bezpośrednio przejść do elementu listy.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-08-24 09:44:43
Hej, sprawdź to, działa dla mnie... hope it work for u too
Jeśli pozycja listy zawiera ImageButton
Problem: OnItemClickListener
po prostu w ogóle nie odpowie!
Powód: brak pomysłu
Rozwiązanie: w kodzie ustaw ostrość ImageButton
na “false”
1: ImageButton button = (ImageButton) convertView.findViewById(R.id.imageButton);
2: button.setFocusable(false);
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-10-20 20:07:45
Mam działanie, które rozszerza ListActivity.
Próbowałem zrobić coś takiego w onCreate:
ListView listView = getListView();
listView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
Log.i("Hello!", "Y u no see me?");
}
});
Ale to nie zadziałało.
Zamiast tego po prostu musiałem obejść onListItemClick:
@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
Log.i("Hello!", "Clicked! YAY!");
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-11-25 11:18:26
Jeśli widok pozycji listy zawiera przycisk lub checkbox lub imagebutton, onitemclicklistener i onitemlongclicklistener nie działają ze względu na to ma własny słuchacz onclick.
Ustaw fokus jako false
holder.button.setFocusable(false);
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-07-16 09:53:43
Jeśli chcesz włączyć pozycję Kliknij w widoku listy użyj
listitem.setClickable(false);
To może wydawać się złe na pierwszym miejscu, ale to działa!
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-07-16 14:13:30
1) Sprawdź, czy używasz OnItemClickListener lub OnClickListener (który nie jest obsługiwany dla ListView)
dokumentacja Android Developers ListView
2) Sprawdź, czy poprawnie dodałeś Listener do ListView. Jest podłączony do ListView, a nie do ListAdapter!
ListView.setOnItemClickListener(listener);
3) jeśli potrzebujesz użyć OnClickListener, sprawdź, czy używasz DialogInterface.OnClickListener
lub View.OnClickListener
(można je łatwo wymienić, jeśli nie są zwalidowane lub jeśli używasz obu)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-10-04 09:41:58
SetClickable as false to ImageButton like this
imagebutton.setClickable(false);
A następnie wykonaj OnItemClickListener
do listview.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-10-04 09:45:32
Jeśli zdefiniujesz program ListView:
mListView.setDescendantFocusability(ListView.FOCUS_BLOCK_DESCENDANTS);
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-02-25 15:49:49
Możesz również użyć "lambda", składnia Lambda nie jest obsługiwana w Javie 1.7 lub wcześniejszych systemach JVMs.
listView.setOnItemClickListener((parent, view, position, id) -> {
});
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-07-03 14:31:23
listPaired = (ListView) findViewById(R.id.listView1);
listPairedData = new ArrayList<String>();
araPaired = new ArrayAdapter(this, android.R.layout.simple_list_item_1, listPairedData);
listPaired.setAdapter(araPaired);
listPaired.setOnItemClickListener(listPairedClickItem);
private OnItemClickListener listPairedClickItem = new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
String info = ((TextView) arg1).getText().toString();
Toast.makeText(getBaseContext(), "Item "+info, Toast.LENGTH_LONG).show();
}
};
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-06-19 10:53:28
W Javie jak inne sugestie
listitem.setClickable(false);
Lub w xml:
android:clickable="false"
To działa bardzo dobrze
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-02-07 07:27:11
Czy jest i obrazek w widoku listy, którego używasz> następnie kliknij link: http://vikaskanani.wordpress.com/2011/07/20/android-custom-image-gallery-with-checkbox-in-grid-to-select-multiple/
Myślę, że kiedy ćwiczysz na linku, który podałem najpierw wszystko będzie działać dobrze, próbowałem tego. Jeśli chcesz uzyskać dokładną odpowiedź, rozwiń pytanie z kodem i opisem.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-10-04 09:54:26
Po prostu Wstaw linię do Ratingbara:
android:isIndicator="true"
W XML Pasek ocen wygląda tak.
<RatingBar
android:id="@+id/ratingBar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="6dp"
android:isIndicator="true"
android:clickable="false"
android:focusable="false"
android:focusableInTouchMode="false" />
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-04-09 19:40:35
lv.setOnItemClickListener(new OnItemClickListener()
{
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
// TODO Auto-generated method stub
}
});
Android onitemclicklistener koliduje z onclicklistener pozycji wiersza listview w adapterze. Musisz tylko upewnić się, że Twój kod jest dobrze zarządzany i poprawnie napisany przy użyciu standardów.
Sprawdź odpowiedź w linku podanym poniżej:
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:26:35