Mam listę CHOICE_MODE_SINGLE z 3 wierszami. Jak umieścić zdarzenie onClick, które zmienia wartość dowolnej zmiennej, tak aby po kliknięciu wiersza 1, powiedzmy, wartość X = 1, a gdy kliknięto wiersz 2, wartość X = 2 itd.?
public class List extends ListActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setListAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_single_choice, GENRES));
final ListView listView = getListView();
listView.setItemsCanFocus(false);
listView.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
}
private static final String[] GENRES = new String[] {"Barre", "Buffumville","Hodges"};
}
Odpowiedzi:
2 dla odpowiedzi № 1Jest to dość proste .. zamiast rozszerzać ListActivity rozszerz go o działanie i po prostu zadeklaruj widok listy w pliku XML, jak poniżej:
<ListView
android:id="@+id/list"
android:layout_width="fill_parent"
android:layout_height="wrap_content"/>
zainicjuj widok listy w swojej działalności:
ListView listView=(ListView) findViewById(R.id.list);
Po ustawieniu adaptera w ten sam sposób ustaw odbiornik kliknięć elementu widoku listy, jak poniżej w kodzie:
listView.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View v, int position,
long id) {
Toast.makeText(getBaseContext(), GENRES[position], Toast.LENGTH_SHORT).show();
}
});
W ten sposób uzyskasz pożądaną wartość tej pozycji widoku listy. Z pewnością uzyskasz pożądany rezultat.
0 dla odpowiedzi nr 2
Chcesz ustawić onItemClickListener w widoku listy.
listView.setOnItemClickListener(
new OnItemClickListener(
@Override
onItemClick(AdapterView<?> listView, View cell, int position, long id) {
// Code to change variables
}
});
0 dla odpowiedzi № 3
Możesz wdrożyć protected void onListItemClick (ListView l, View v, int position, long id)
w twojej ListActivity, a zmienna pozycji informuje, który element został kliknięty.