Если вы хотите иметь возможность щелкнуть по элементу в списке и что-то произошло, вам нужно сделать что-то вроде следующего:
public class YourClass extends ListActivity {
//Your Variables
ArrayList<Type> yourlist;
YourAdapterClass adapter;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
yourlist = new ArrayList<Type>();
this.adapter = new YourAdapterClass(this, R.layout.row, yourlist);
setListAdapter(this.adapter);
//you might be able to see if the below works instead of overriding
//the OnListItemClickListener farther below
ListView lv = getListView();
lv.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
Log.i("testy", "I Clicked on Row " + position + " and it worked!");
}
});
}
@Override
/**
* When the user selects an item in the list, do an action
* @param ListView l
* @param View v
* @param int position
* @param long id
*/
protected void onListItemClick(ListView l, View v, int position, long id) {
super.onListItemClick(l, v, position, id);
final int index = position;
//You can add whatever you want to happen when you click here
Log.i("testy", "I Clicked on Row " + index + " and this overriding worked!");
}
//other methods can go here for you list
}
Вам также понадобится класс адаптера (в моем примереМой класс адаптера называется YourAdapterClass
). Вы можете сделать этот класс закрытым в вашем ListActivty или совершенно новый класс в своем собственном Java-файле, как показано ниже:
public class YourAdapterClass extends ArrayAdapter {
protected ArrayList items;
public YourAdapterClass(Context context, int textViewResourceId, ArrayList items) {
super(context, textViewResourceId, items);
this.items = items;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View v = convertView;
if(v == null) {
LayoutInflater vi = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v = vi.inflate(R.layout.row, null);
}
//do stuff to your list view row if it is a custom row with multiple
//components like text views, image views etc.
return v;
}
}
Обычно этот способ используется для пользовательскихListViews (списки с пользовательскими строками, но вы можете использовать его и для обычного просмотра)
Надеюсь, это поможет вам, по крайней мере, начать работу в правильном направлении.
Удачи.
(это был ответ, который я в основном дал для другой темы, похожей на эту Custom ListVIew и onclick )