То, что делает этот код, реализует новый встроенный OnItemClickListener. Интерфейс OnItemClickListener - это, по сути, контракт, в котором говорится, что объект будет обеспечивать реализацию функции onItemClick (....). Позже, когда по элементу в вашем списке щелкают, вызывается функция onItemClick и AdapterView (вещь, которая создает экземпляры и управляет строками списка, представление - (код рендеринга для конкретной строки), позиция (позиция в список) и свойство id, которое я никогда не использую, чтобы вы могли посмотреть, для чего они передаются.
Встроенный код, как это всегда выглядит для меня странно. Есть пара других способов написать это, которые, я думаю, имеют более интуитивный смысл. Просто помните, что то, что вы делаете, - это написание некоторого кода, который будет выполняться при нажатии на строку в вашем списке.
1 - вы можете использовать свой Activity для реализации OnItemClickListener
public class SomeActivity extends Activity implements OnItemClickListener{
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.yourview);
ListView lv = (ListView)findViewById(R.id.listView);
lv.setOnItemClickListener(this);
}
@Override
public void onItemClick(AdapterView<?> arg0, View view, int position, long id) {
//Your toast code goes in here
}
}
В этом коде ваш основной класс реализует интерфейс OnItemClickListener, поэтому setOnItemClickListener видит основной класс (this) как экземпляр OnItemClickListener. При щелчке строки в вашем списке вызывается функция onItemClick.
Вы также можете 2 - ваш слушатель кликов пришел из внутреннего класса.
public class SomeActivity extends Activity implements OnItemClickListener{
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.yourview);
ListView lv = (ListView)findViewById(R.id.listView);
lv.setOnItemClickListener(new YourInternalClass());
}
class YourInternalClass implements View.OnItemClickListener{
@Override
public void onItemClick(AdapterView<?> arg0, View view, int position, long id) {
//Your toast code goes in here
}
}
}
И действительно, все три метода выполняют одно и то же: предоставляют setOnItemClickListener экземпляр класса View.OnItemClickListener, который будет вызывать функцию onItemClick при нажатии на строку в списке.