adapterviewAndroid开发 关于ListView的点击事件
adapterview 时间:2021-06-11 阅读:(
)
AdapterView.OnItemClickListener与AdapterView.OnItemSelectedListener的问题?求救!!!!
1、当列表项被选中或者被单击时触发的事件——setOnItemClickListener(AdapterView.OnItemClickListener listener);
2、当列表项改变时所触发的事件——setOnItemSelectedListener(AdapterView.OnItemSelectedListener listener);GridLayout和GridView的区别
GridLayout和GridView的区别:
GridView是一种适配器布局,它的继承关系是ViewGroup-->AdapterView-->AbsListView-->GridView,他是从一个adapter中取出内容填充到GridView中的每一个子View。
GridLayout是一个布局,它大大简化了对复杂布局的处理,提高了性能。
他直接继承自ViewGroup,和LinearLayout这种是类似的。
我感觉GridView和GridLayout就和ListView和LinearLayout的区别类似。
那么什么时候用GridView什么时候用GridLayout呢?
类似九宫格这种可以采用GridView。
但是像Android系统自带的计算器的界面就不可能通过GridView实现,因为有些按键不一样大,如果使用GridLayout实现那就很简单了。
另外GridLayout比RelativeLayout更好用。
两个listview在onitemclick怎么区分
这个iew关键是看你的adapter是怎么导入的,类似的有个例子你可以参考: listView.setOnItemClickListener(new OnItemClickListener()
{ @Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id)
{ 这里面可以弄switch(position)或者别的
case(1)
{就跳转到另一个页面
}
}
});
如果没有用adapter
直接写方法就行,
void onListItemClick(ListView l, View v, int position, long id) //这个是已经出了列表,点击列表之中的成员时,会有一个toast提示出来
{
selectedItem = position;
Toast.makeText(EX04_20.this,
mString[selectedItem],//因为是click事件,所以直接用数组,索引值就是参数中的position
Toast.LENGTH_SHORT).show();
super.onListItemClick(l, v, position, id);
}RecyclerView 和 ListView的区别
android是一个不断进化的平台,android
5.0的v7版本支持包中引入了新的recyclerview控件,正如官方文档所言,recyclerview是iew的豪华增强版。
它主要
包含以下几处新的特性,如viewholder,itemdecorator,layoutmanager,smothscroller以及增加或删除
item时item动画等。
官方推荐我们采用recyclerview来取代iew。
viewholder
viewholder是用来保存视图引用的类,无论是iew亦或是recyclerview。
只不过在iew
中,viewholder需要自己来定义,且这只是一种推荐的使用方式,不使用当然也可以,这不是必须的。
只不过不使用viewholder的
话,iew每次iew的时候都会调用findviewbyid(int),这将导致iew性能展示迟缓。
而在
recyclerview中使用 recyclerview.viewholder 则变成了必须,尽管实现起来稍显复杂,但它却解决了iew面临的上述不使用自定义viewholder时所面临的问题。
recyclerview.viewholder 被baseadapter使用,以将posiiton绑定到上面(可以通过api查看 recyclerview.viewholder#getposition() 方法)。
layoutmanager
我们知道iew只能在垂直方向上滚动,android
api没有提供iew在水平方向上面滚动的支持。
或许有多种方式实现水平滑动,但是请想念我,iew并不是设计来做这件事情的。
但是
recyclerview相较于iew,在滚动上面的功能扩展了许多。
它可以支持多种类型列表的展示要求,主要如下:
linearlayoutmanager ,可以支持水平和竖直方向上滚动的列表。
staggeredgridlayoutmanager ,可以支持交叉网格风格的列表,类似于瀑布流或者pinterest。
gridlayoutmanager ,支持网格展示,可以水平或者竖直滚动,如展示图片的画廊。
itemanimator
列表动画是一个全新的、拥有无限可能的维度。
起初的android api中,删除或添加item时,item是无法产生动画效果的。
后面随着android的进化,google的chat hasse推荐使用 viewpropertyanimator 属性动画来实现上述需求。
相比较于iew, recyclerview.itemanimator 则被提供用于在recyclerview添加、删除或移动item时处理动画效果。
同时,如果你比较懒,不想自定义itemanimator,你还可以使用 defaultitemanimator 。
adapter
iew的adapter中,iew是最重要的方法,它将视图跟position绑定起来,是所有神奇的事情发生的地方。
同时我们也能够
通过registerdataobserver在adapter中注册一个观察者。
recyclerview也有这个特性, recyclerview.adapterdataobserver
就是这个观察者。
iew有三个adapter的默认实现,分别是arrayadapter、cursoradapter和
simplecursoradapter。
然而,recyclerview的adapter则拥有除了内置的内db游标和arraylist的支持之外的
所有功能。
recyclerview.adapter 的实现的,我们必须采取措施将数据提供给adapter,正如baseadapter对iew所做的那样。
itemdecoration
在iew中如果我们想要在item之间添加间隔符,我们只需要在布局文件中对iew添加如下属性即可:
1 android:divider="@android:color/transparent"
2 android:dividerheight="5dp"
view code
有趣的是,recyclerview在默认情况下并不在item之间展示间隔符。
尽管google的家伙有意地将这个问题遗留给我们去自定义间隔符,但这
的确增加了开发人员的负担。
如果你想要添加间隔符,你必须使用recyclerview.itemdecoration类来实现。
或者,你可以应用官方示
例中的 divideritemdecoration.java 文件。
onitemtouchlistener
iew通过adapterview.onitemclicklistener接口来探测点击事件。
而recyclerview则通过
recyclerview.onitemtouchlistener接口来探测触摸事件。
它虽然增加了实现的难度,但是却给予开发人员拦截触摸事件更多的
控制权限。
others
iew可以设置选择模式,并添加multichoicemodelistener,如下所示:
1 iew.setchoicemode(iew.choice_mode_multiple_modal);
2 iew.setmultichoicemodelistener(new multichoicemodelistener() {
3 public boolean oncreateactionmode(actionmode mode, menu menu) { ... }
4 public void onitemcheckedstatechanged(actionmode mode, int position,
5 long id, boolean checked) { ... }
6 public boolean onactionitemclicked(actionmode mode, menuitem item) {
7 switch (item.getitemid()) {
8 case r.id.menu_item_delete_crime:
9 crimeadapter adapter = (crimeadapter)getlistadapter();
10 crimelab crimelab = crimelab.get(getactivity());
11 for (int i = adapter.getcount() - 1; i >= 0; i--) {
12 if (iew().isitemchecked(i)) {
13 crimelab.deletecrime(adapter.getitem(i));
14 }
15 }
16 mode.finish();
17 adapter.notifydatasetchanged();
18 return true;
19 default:
20 return false;
21 }
22 public boolean onprepareactionmode(actionmode mode, menu menu) { ... }
23 public void ondestroyactionmode(actionmode mode) { ... }
24 });
view code
而recyclerview则没有此功能。
总之,通过比较我们可以发现,recyclerview充满了大量的自定义功能,它可以用于实现复杂的列表或网格,但实现起来稍显得复杂。
Android开发 关于ListView的点击事件
list.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
//arg0:就是你的iew arg2:点击的item的位置。
和你的数组的下标相等。
arg3:被电击view的id
所以这里你只要判断arg2这个位置参数就能知道点击的哪个,然后根据这个处理。
比如你上面的代码。
当这个arg2=0;那么就是相当于点击了你的“保密设置”这一栏。
像你这里,可以如下:
switch(arg2){
case 0://保密设置
break;
case 1://安全
break;
case 2://系统设置
......
....
}
}
});
hostround怎么样?大硬盘服务器,高防服务器。hostround,美国商家,2017年成立,正规注册公司(Company File #6180543),提供虚拟主机、VPS云主机、美国服务器、荷兰服务器租用等。现在有1款特价大硬盘独服,位于达拉斯,配置还不错,本月订购时包括免费 500Gbps DDoS 保护,有兴趣的可以关注一下。点击直达:hostround官方网站地址美国\荷兰独立服务器...
近日CloudCone发布了七月的特价便宜优惠VPS云服务器产品,KVM虚拟架构,性价比最高的为2核心1.5G内存1Gbps带宽5TB月流量,2.89美元/月,稳定性还是非常不错的,有需要国外便宜VPS云服务器的朋友可以关注一下。CloudCone怎么样?CloudCone服务器好不好?CloudCone值不值得购买?CloudCone是一家成立于2017年的美国服务器提供商,国外实力大厂,自己开...
Chia矿机,Spinservers怎么样?Spinservers好不好,Spinservers大硬盘服务器。Spinservers刚刚在美国圣何塞机房补货120台独立服务器,CPU都是双E5系列,64-512GB DDR4内存,超大SSD或NVMe存储,数量有限,机器都是预部署好的,下单即可上架,无需人工干预,有需要的朋友抓紧下单哦。Spinservers是Majestic Hosting So...
adapterview为你推荐
视频压缩算法视频压缩原理chrome系统Chrome操作系统是什么样的系统?qq博客怎么开QQ博客啊华为总裁女儿为啥姓孟任正非女儿为什么姓孟?12种颜色油画的基本12种颜色是什么assemblyinfoLOL的 X、L、CS 是什么意思移动硬盘文件或目录损坏且无法读取移动硬盘提示文件或目录损坏且无法读取,怎么修复软件开发技术文档软件开发文档重要吗?明星个人网站明星的网站地址是多少?电子词典软件哪里有免费的汉语电子字典软件,谢谢!
vps服务器租用 fastdomain 账号泄露 godaddy优惠券 parseerror 轻博 河南移动网 爱奇艺vip免费领取 免费mysql数据库 香港亚马逊 512mb starry 阿里云免费邮箱 阿里云邮箱登陆地址 godaddy空间 512内存 paypal登陆 let 戴尔主机 国内免备案cdn 更多