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://系统设置
......
....
}
}
});
Virmach对资源限制比较严格,建议查看TOS,自己做好限制,优点是稳定。 vCPU 内存 空间 流量 带宽 IPv4 价格 购买 1 512MB 15GB SSD 500GB 1Gbps 1 $7/VirMach:$7/年/512MB内存/15GB SSD空间/500GB流量/1Gbps端口/KVM/洛杉矶/西雅图/芝加哥/纽约等 发布于 5个月前 (01-05) VirMach,美国老牌、稳...
野草云月末准备了一些促销,主推独立服务器,也有部分云服务器,价格比较有性价比,佣金是10%循环,如果有时间请帮我们推推,感谢!公司名:LucidaCloud Limited官方网站:https://www.yecaoyun.com/香港独立服务器:CPU型号内存硬盘带宽价格购买地址E3-1230v216G240GB SSD或1TB 企盘30M299元/月点击购买E5-265016G240GB SS...
RepriseHosting是成立于2012年的国外主机商,提供独立服务器租用和VPS主机等产品,数据中心在美国西雅图和拉斯维加斯机房。商家提供的独立服务器以较低的价格为主,目前针对西雅图机房部分独立服务器提供的优惠仍然有效,除了价格折扣外,还免费升级内存和带宽,商家支持使用支付宝或者PayPal、信用卡等付款方式。配置一 $27.97/月CPU:Intel Xeon L5640内存:16GB(原...
adapterview为你推荐
视频压缩算法怎样把3个1G多,1个400多MB的视频文件压缩小?但又无损音质和画面清晰度的。qq博客怎样开通QQ博客?印度尼西亚国家代码谁知道世界各国的国家电话代码?云盘网谁知道免费的网盘?微信智能机器人微信群机器人是怎么实现的维基百科中文网站科普网页最大的谁有bt代理为什么用代理下载BT非常非常慢啊?移动硬盘文件或目录损坏且无法读取移动硬盘提示文件或目录损坏且无法读取!网络备份怎样手动备份宽带帐号密码网络电话免费版有没有免费的网络电话?纯免费的
com域名注册1元 服务器评测 highfrequency diahosting 回程路由 网页背景图片 主机合租 1g空间 稳定免费空间 酷番云 流媒体加速 最漂亮的qq空间 服务器是干什么用的 阿里云免费邮箱 论坛主机 华为k3 黑科云 谷歌搜索打不开 windowssever2008 ncp是什么 更多