我们使用setOnItemClickListener()方法为ListView注册一个监听器,当用户点击了ListView中任何一个子项时,就会回调onItemClick()方法。在这个方法中可以通过position参数判断用户点击的是哪一行,任何获取到相应的数据。
代码如下:
public class MainActivity extends AppCompatActivity { // 测试数据1 简单的Listview private String[] data = { "苹果","香蕉","橘子","大苹果","香蕉","橘子","中苹果","香蕉","橘子","小苹果","香蕉","橘子","最小苹果","香蕉","橘子"}; // 测试数据2 定制listView private List<Fruit> fruitList = new ArrayList<>(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); /** * ArrayAdapter 适配器 * 第一个参数:当前上下文 * 第二个参数:ListView子项布局的id (android.R.layout.simple_list_item_1:Android内置的布局文件,里面只有一个Textview) * 第三个参数:要适配的数据 */ // ArrayAdapter<String> adapter = new ArrayAdapter<String>( // MainActivity.this, android.R.layout.simple_list_item_1, data); // // ListView listView = (ListView)findViewById(R.id.list_view); // listView.setAdapter(adapter); // 自定义ListView的界面 // 初始化水果数据 initFruits(); FruitAdapter adapterF = new FruitAdapter(MainActivity.this, R.layout.fruit_item, fruitList); ListView listView = (ListView) findViewById(R.id.list_view); listView.setAdapter(adapterF); // 点击事件 listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { Fruit fruit = fruitList.get(position); Toast.makeText(MainActivity.this, fruit.getName(), Toast.LENGTH_SHORT).show(); } }); } private void initFruits() { for (int i = 0; i<2; i++) { Fruit apple = new Fruit("Apple", R.mipmap.ic_launcher); fruitList.add(apple); } } }