ListView 列表项点击事件
OnItemClick 接口
(一)概述
OnItemClick 接口负责监听列表项单击事件。
(二)常用方法
void onItemClick(AdapterView<?> parent,View view,int position,long id)
作用:监听用户单击列表项的事件
说明:
1)参数-parent:当前列表对象,如 ListView 对象。
2)参数-view:被单击的列表项对象。
3)参数-position:被单击的 view 在适配器中的索引值。
4)参数-id:被单击的列表项在列表中的索引值。
position 与 id 的值相同。
OnItemLongClick 接口
(一)概述
OnItemLongClick 接口负责监听用户长按列表项的事件。
(二)常用方法
public boolean onItemLongClick(AdapterView<?> parent,View view,int position,long id)
作用:监听用户长按列表项事件。
参数说明:参见 onItemClick()中参数的说明。.
返回:返回 true 表示本方法处理了长按事件,该事件不会分发个其它控
件处理。若返回 false,则本次长按事件还会分发给其它控件处理。
说明:长按是指触摸控件的事件超过0.5秒
简单总结:
OnItemClick就是监听短按操作的监听器
OnItemLongClick就是监听长按操作的监听器
实例:
package com.jxust.day_05_01_listviewdemo; import java.util.ArrayList; import java.util.List; import android.app.Activity; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.AdapterView.OnItemLongClickListener; import android.widget.BaseAdapter; import android.widget.ImageView; import android.widget.ListView; import android.widget.TextView; import android.widget.Toast; public class MainActivity extends Activity { ListView mlvGeneral; List<GeneralBean> mGenerals; // 代表十个军事家的集合 GeneralAdapter mAdapter; int[] resid = { R.drawable.baiqi, R.drawable.caocao, R.drawable.chengjisihan, R.drawable.hanxin, R.drawable.lishimin, R.drawable.nuerhachi, R.drawable.sunbin, R.drawable.sunwu, R.drawable.yuefei, R.drawable.zhuyuanzhang }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initData(); // 初始化数据 initView(); setListener(); //设置监听器 } private void setListener() { setOnItemClickListener(); setOnItemLongClickListener(); } // 长按操作 private void setOnItemLongClickListener() { mlvGeneral.setOnItemLongClickListener(new OnItemLongClickListener() { @Override public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) { Toast.makeText(MainActivity.this, mGenerals.get(position).getName()+"被长按", 2000).show(); //false的作用就是告诉系统自己没有处理,交给其他监听器,从而就到了短按操作的那个监听器 //true的作用就是告诉系统自己已经处理了 return true; } }); } // 短按操作 private void setOnItemClickListener() { mlvGeneral.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { Toast.makeText(MainActivity.this, mGenerals.get(position).getName()+"被短按", 2000).show(); } }); } private void initView() { mlvGeneral = (ListView) findViewById(R.id.lvGeneral); mAdapter = new GeneralAdapter(); // 创建适配器 // 和ListView 关联起来 mlvGeneral.setAdapter(mAdapter); } private void initData() { // 将资源中的字符串数组转换为Java数组 String[] names = getResources().getStringArray(R.array.generals); mGenerals = new ArrayList<GeneralBean>(); for (int i = 0; i < names.length; i++) { GeneralBean bean = new GeneralBean(resid[i], names[i]); mGenerals.add(bean); } } // 定义代表军事家的适配器类 class GeneralAdapter extends BaseAdapter { @Override public int getCount() { return mGenerals.size(); } @Override public Object getItem(int position) { return mGenerals.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { // 拿到 ListView 的布局并且转换为 View 类型的对象 View layout = View.inflate(MainActivity.this, R.layout.item_generals, null); // root表示的是父容器 // 找到显示军事家头像的 ImageView // layout的作用就是将目标转换为 layout.item_generals ImageView ivThumb = (ImageView) layout.findViewById(R.id.ivThumb); // 找到显示军事家名字的 TextView TextView tvName = (TextView) layout.findViewById(R.id.tvName); // 获取军事家中下标是 position 的军事家对象 GeneralBean bean = (GeneralBean) getItem(position); // 显示军事家头像 ivThumb.setImageResource(bean.getResid()); // 显示军事家的姓名 tvName.setText(bean.getName()); return layout; } } }
相关推荐
`onItemClick`和`onItemLongClick`是ListView交互中的两个关键事件监听器,它们分别处理用户点击列表项和长按列表项时的操作。这篇博客"Android下Listview的onItemClick以及onItemLongClick等易模糊问题验证"可能...
SlideAndDragListView支持ListView的Item的拖动排序、左右滑动事件,可自定义左右滑动显示文字、图标、位移,同时支持onItemClick、onItemLongClick等监听器,提供丰富的回调接口。在QQ5.0有类似功能
本篇将详细解释`onItemClick`中的各个参数及其用途,以及如何利用这些参数实现特定的功能,如根据点击的行获取对应的数据并调用Web服务接口。 首先,我们来看`OnItemClickListener`接口中的`onItemClick`方法签名:...
这个接口通常称为`ItemClickListener`,包含一个方法,如`onItemClick(int position)`,其中`position`表示被点击的项的索引。然后,在Adapter中实现该接口,并在`onBindViewHolder`方法中为每个列表项设置点击监听...
例如,可以创建一个ItemClickListener接口,包含onItemClick、onItemLongClick等方法,然后在Adapter中调用。 4. **下拉刷新和上拉加载**: 在现代App中,下拉刷新和上拉加载功能很常见。封装这部分逻辑可以减少重复...
itemView.setOnClickListener(v -> listener.onItemClick(getAdapterPosition())); itemView.setOnLongClickListener(v -> { if (listener != null) { listener.onItemLongClick(getAdapterPosition()); return...
最后,记得在Activity或Fragment中实现这个接口,并在创建Adapter时传入自身作为参数,以便在事件发生时执行相应的业务逻辑。 综上所述,通过自定义Adapter、设置监听器以及使用接口回调,我们可以在RecyclerView中...
void onItemClick(int position); } // 设置监听器 public void setItemClickListener(ItemClickListener listener) { this.clickListener = listener; } // 在ViewHolder中绑定点击事件 @Override ...
首先,我们看到`MainActivity`继承了`Activity`类,并实现了`OnClickListener`, `OnItemClickListener`和`OnItemLongClickListener`接口,这表明该类负责处理用户与界面的交互,如点击和长按事件。 `currentDir`、`...
- ListView有诸如onItemClick、onItemLongClick等事件监听,用于处理用户点击列表项的行为。 2. **Checkbox的集成** - 在ListView的每个列表项布局中添加一个Checkbox,通常会将其放置在每一行的左边,以便用户...
首先,我们要创建一个自定义的Adapter,这个Adapter是ListView与数据源之间的桥梁,负责将数据转化为ListView可显示的View。在适配器中,我们需要重写`getView`方法,在这里可以添加事件监听器。 1. 单击事件: ...
在`onItemClick()`方法中,我们可以通过`AdapterView.OnItemClickListener`提供的参数获取到被点击的项目位置、视图以及整个GridView。下面是一个简单的示例: ```java gridView.setOnItemClickListener(new ...
在这个接口中,`onItemClick`方法会回调,参数包含了点击的position和对应的item数据。这样,你可以在回调中执行相应的业务逻辑,比如跳转到详情页面。 2. **长按事件**:类似地,长按事件的处理可以通过`...
这两个接口都提供了`onItemClick()`和`onItemLongClick()`方法,用于处理用户点击或长按列表项的行为。 **7. 动态加载与分页** 对于大量数据,不建议一次性加载所有项。可以结合LoaderManager和Loader接口实现异步...
3. **丰富的扩展性**:它提供了一套完整的点击事件处理和自定义方法,如onItemClick、onItemLongClick等,以及自定义Header和Footer功能。 接下来,我们将详细介绍如何在二级子项的场景中使用BaseQuickAdapter: 1...
除了使用系统提供的监听器,开发者还可以自定义监听器,通过继承AdapterView.OnItemClickListener和AdapterView.OnItemLongClickListener,或者使用接口的方式,将点击和长按事件的处理封装在一个类中,提高代码的...
在`onBindViewHolder()`方法中,我们为每个item的视图设置点击和长按监听器,通过调用之前定义的接口回调事件: ```java @Override public void onBindViewHolder(final MyViewHolder holder, final int position) ...
1. 在Adapter中定义一个接口`OnItemClickListener`,包含`onItemClick`和`onItemLongClick`方法,用于处理点击和长按事件。 ```java public interface OnItemClickListener { void onItemClick(RecyclerView....
public void onItemClick(RecyclerView recyclerView, int position) { // 处理点击事件 } }) .setOnItemLongClickListener(new RecyclerItemClickSupport.OnItemLongClickListener() { @Override public ...