`

OnItemClick 接口与OnItemLongClick 接口

阅读更多

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;
		}

	}
}

 

分享到:
评论

相关推荐

    Android下Listview的onItemClick以及onItemLongClick等易模糊问题验证

    `onItemClick`和`onItemLongClick`是ListView交互中的两个关键事件监听器,它们分别处理用户点击列表项和长按列表项时的操作。这篇博客"Android下Listview的onItemClick以及onItemLongClick等易模糊问题验证"可能...

    SlideAndDragListView的使用

    SlideAndDragListView支持ListView的Item的拖动排序、左右滑动事件,可自定义左右滑动显示文字、图标、位移,同时支持onItemClick、onItemLongClick等监听器,提供丰富的回调接口。在QQ5.0有类似功能

    老生常谈Listview中onItemClick中的各个参数(推荐)

    本篇将详细解释`onItemClick`中的各个参数及其用途,以及如何利用这些参数实现特定的功能,如根据点击的行获取对应的数据并调用Web服务接口。 首先,我们来看`OnItemClickListener`接口中的`onItemClick`方法签名:...

    recyclerview的点击和长按事件

    这个接口通常称为`ItemClickListener`,包含一个方法,如`onItemClick(int position)`,其中`position`表示被点击的项的索引。然后,在Adapter中实现该接口,并在`onBindViewHolder`方法中为每个列表项设置点击监听...

    listview封装

    例如,可以创建一个ItemClickListener接口,包含onItemClick、onItemLongClick等方法,然后在Adapter中调用。 4. **下拉刷新和上拉加载**: 在现代App中,下拉刷新和上拉加载功能很常见。封装这部分逻辑可以减少重复...

    Android-自定义的一个RecycleView实现了ListViewGridView和瀑布流三种效果

    itemView.setOnClickListener(v -&gt; listener.onItemClick(getAdapterPosition())); itemView.setOnLongClickListener(v -&gt; { if (listener != null) { listener.onItemLongClick(getAdapterPosition()); return...

    RecyclerView的长按事件和点击事件

    最后,记得在Activity或Fragment中实现这个接口,并在创建Adapter时传入自身作为参数,以便在事件发生时执行相应的业务逻辑。 综上所述,通过自定义Adapter、设置监听器以及使用接口回调,我们可以在RecyclerView中...

    RecyclerView 三种item点击事件

    void onItemClick(int position); } // 设置监听器 public void setItemClickListener(ItemClickListener listener) { this.clickListener = listener; } // 在ViewHolder中绑定点击事件 @Override ...

    android文件浏览器源代码

    首先,我们看到`MainActivity`继承了`Activity`类,并实现了`OnClickListener`, `OnItemClickListener`和`OnItemLongClickListener`接口,这表明该类负责处理用户与界面的交互,如点击和长按事件。 `currentDir`、`...

    listviewAndcheckbox

    - ListView有诸如onItemClick、onItemLongClick等事件监听,用于处理用户点击列表项的行为。 2. **Checkbox的集成** - 在ListView的每个列表项布局中添加一个Checkbox,通常会将其放置在每一行的左边,以便用户...

    android listview长按,单击各种事件捕捉

    首先,我们要创建一个自定义的Adapter,这个Adapter是ListView与数据源之间的桥梁,负责将数据转化为ListView可显示的View。在适配器中,我们需要重写`getView`方法,在这里可以添加事件监听器。 1. 单击事件: ...

    GridView的点击事件

    在`onItemClick()`方法中,我们可以通过`AdapterView.OnItemClickListener`提供的参数获取到被点击的项目位置、视图以及整个GridView。下面是一个简单的示例: ```java gridView.setOnItemClickListener(new ...

    BaseRecyclerViewAdapterHelper(二)

    在这个接口中,`onItemClick`方法会回调,参数包含了点击的position和对应的item数据。这样,你可以在回调中执行相应的业务逻辑,比如跳转到详情页面。 2. **长按事件**:类似地,长按事件的处理可以通过`...

    Android ListView

    这两个接口都提供了`onItemClick()`和`onItemLongClick()`方法,用于处理用户点击或长按列表项的行为。 **7. 动态加载与分页** 对于大量数据,不建议一次性加载所有项。可以结合LoaderManager和Loader接口实现异步...

    basequickadapter结合recycleview使用、二级子项(泛型版本)

    3. **丰富的扩展性**:它提供了一套完整的点击事件处理和自定义方法,如onItemClick、onItemLongClick等,以及自定义Header和Footer功能。 接下来,我们将详细介绍如何在二级子项的场景中使用BaseQuickAdapter: 1...

    list点击长按事件

    除了使用系统提供的监听器,开发者还可以自定义监听器,通过继承AdapterView.OnItemClickListener和AdapterView.OnItemLongClickListener,或者使用接口的方式,将点击和长按事件的处理封装在一个类中,提高代码的...

    Android TV开发:使用RecycleView实现横向的Listview并响应点击事件的代码

    在`onBindViewHolder()`方法中,我们为每个item的视图设置点击和长按监听器,通过调用之前定义的接口回调事件: ```java @Override public void onBindViewHolder(final MyViewHolder holder, final int position) ...

    Android RecyclerView的Item点击事件实现整理

    1. 在Adapter中定义一个接口`OnItemClickListener`,包含`onItemClick`和`onItemLongClick`方法,用于处理点击和长按事件。 ```java public interface OnItemClickListener { void onItemClick(RecyclerView....

    RecyclerItemClickSupport,.zip

    public void onItemClick(RecyclerView recyclerView, int position) { // 处理点击事件 } }) .setOnItemLongClickListener(new RecyclerItemClickSupport.OnItemLongClickListener() { @Override public ...

Global site tag (gtag.js) - Google Analytics