Android ListFragment OnClickListener funktioniert nicht
Ich habe ein ListFragment in meiner android-Anwendung, ich habe es zu arbeiten, aber das OnClick-Listener nicht funktioniert, ich versuchte nur, es so zu machen, dass, wenn ein beliebiges Element auf der Liste ist gewählt, einen Toast erscheint, und es ist nicht passiert, es ist kein Fehler, also habe ich keine LogCat posten
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
//TODO Auto-generated method stub
View v = inflater.inflate(R.layout.main, container, false);
ArrayList<HashMap<String, String>> menuItems = new ArrayList<HashMap<String, String>>();
//...
ListAdapter adapter = new SimpleAdapter(getActivity(), menuItems,
R.layout.list_item,
new String[] { KEY_NAME, KEY_DESC, KEY_COST }, new int[] {
R.id.name, R.id.desciption, R.id.cost });
setListAdapter(adapter);
ListView lv = (ListView)v.findViewById(android.R.id.list);
lv.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
//getting values from selected ListItem
Toast.makeText(getActivity().getApplicationContext(), "Not Configured",
Toast.LENGTH_SHORT).show();
}
});
return v;
}
Dank
- Versuchen Sie
.getApplicationContext()
für toast. - didnt, das problem zu beheben
- Möglicherweise werden Kinder von der listView haben setted
clickable
Attribut oder haben eigene onClickListeners?
InformationsquelleAutor Cam Connor | 2013-08-02
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
wenn Ihre Klasse extends ListFragment als alles, was Sie tun müssen, ist nur das überschreiben seiner onListItemClick-Methode.
Den ListFragment Unterklasse schon hat es
overriden
onListItemClick
Methode.Der doc sagt:
So gibt es keine Notwendigkeit zu erklären, ein weiteres listner für deine listview.
Entfernen
.getApplicationContext()
funktionieren sollte. Ich habe einige code ähnelt Ihr von einer app die ich gemacht habe. Seine von innen ein fragment, aber auch funktioniert ohne problem. Diedb.remove
ist wahrscheinlich irrelevant für deinen code, aber da dieser code wurde geschrieben, für eine Anwendung mit einer Datenbank. Vielleicht auch versuchennew OnItemClickListener
zunew AdapterView.OnItemClickListener
Wenn das nicht funktioniert, vielleicht versuchen Sie es mit einer Context-Instanz-variable wie:
oder
Habe ich noch nie gearbeitet mit ListFragments, bevor, obwohl, so bin ich nicht sicher, ob alles, was ich schrieb, funktionieren wird.
setzen
alle itens in Ihrer Reihe
Stellen Sie sicher, dass Sie
1.sollte nicht onclicklistener in Ihrem Adapter
2.innerhalb Ihrer XML-layout -
Listview sollte initialisiert werden, wie
hier id android:onClick="@id/list" wichtig
ListView lv = getListView
wenn Ihr die Verlängerung Ihres fragment von ListFragment statt Fragment