У меня есть этот код, но я не вижу действия, когда я нажимаю на элемент из списка. Этот код показывает мне информацию о ArrayList profilesArrayList, но я не знаю, как я могу проверить, какой элемент я выбираю из списка. Кто-нибудь может мне помочь?
profilesArrayList = new ArrayList<Profile>();
profilesArrayList = copyProfilesToArrayList();
ProfileAdapter adapter = new ProfileAdapter(
getApplicationContext(), R.layout.profiles_item, profilesArrayList);
listViewProfiles = (ListView)findViewById(android.R.id.list);
listViewProfiles.setAdapter(adapter);
listViewProfiles.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> a, View v, int position, long id) {
switch(position) {
case 0:
Log.d("cardNumber", profilesArrayList.get(0).getCardNumber());
break;
Если ваш класс контейнера для этого кода является ListActivity, просто переопределите onListItemClick для этого класса, а не установите его как OnItemClickListener для представления. Это работает для меня
public class ProfileList extends ListActivity
{
private ArrayList<Profile> profilesArrayList;
@Override
public void onCreate ( Bundle savedInstanceState )
{
super.onCreate(savedInstanceState);
//populate your arraylist
setListAdapter ( new ArrayAdapter<Profile>() );
}
@Override
protected void onListItemClick(ListView l, View v, int position, long id)
{
super.onListItemClick(l, v, position, id);
Log.d("cardNumber", profilesArrayList.get(position).getCardNumber());
}
}
position
- это индекс в вашем массиве, по которому был выполнен щелчок. Итак, в вашем примере, чтобы получить объект Profile
которому щелкнули, сделайте profilesArrayList.get(position);
Попробуйте использовать getSelectedItemPosition() и добавьте INVALID_POSITION в качестве одного из ваших возможных случаев