android中怎么才能做到ih5点击跳转下一页页面中的某一行,然后就可以进入下一页

Android:防止过快点击造成多次事件
:防止过快点击造成多次事件
onClick事件是Android开发中最常见的事件。比如,一个submitButton,功能是点击之后会提交一个订单,
则一般代码如下,其中submitOrder()函数会跳转到下一页进行处理 :
submitButton.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
submitOrder();
正常情况下这段代码是没什么问题的,但是Android设备的机型性能等千差万别,如果碰到比较卡的手机,则有可能出现submitOrder()函数跳转页面出现延迟的现象。碰到这种现象,则用户就很有可能再次点击一次,从而造成函数被调用两次,出现重复订单的BUG。
一般地,碰到这现象,首先就会想到的就是在点击之后把submitButton设置为不可点击:
submitButton.setClickable(false);
submitButton.setEnabled(false);
此方法也确实有效,不过如果submitOrder()方法没有成功,需要再次提交订单时又需要再重复把submitButton设置为可点击状态。如果类似的button比较多时,就显得比较麻烦、混乱。
自定义一个NoDoubleClickListener,继承自OnClickListener:
public abstract class NoDoubleClickListener implements OnClickListener {
public static final int MIN_CLICK_DELAY_TIME = 1000;
private long lastClickTime = 0;
public void onClick(View v) {
long currentTime = Calendar.getInstance().getTimeInMillis();
if (currentTime - lastClickTime & MIN_CLICK_DELAY_TIME) {
lastClickTime = currentT
onNoDoubleClick(v);
使用方法&& 给submitButton设置点击事件时用NoDoubleClickListener代替OnClickListener,并且实现方法onNoDoubleClick代替onClick即可,像这样:
submitButton.setOnClickListener(new NoDoubleClickListener() {
public void onNoDoubleClick(View v) {
submitOrder();
很简单,见代码&&
就是用onNoDoubleClick代替onClick处理具体的操作,在onClick方法中加一个判断:在接收到点击事件之后,先判断一下时间,如果距离上次处理操作不足MIN_CLICK_DELAY_TIME,就忽视&&即能防止误操作的连续点击导致重复事件。
MIN_CLICK_DELAY_TIME可调。
好处是不用改变原有代码的逻辑,就只需要两个替换:NoDoubleClickListener代替OnClickListener,onNoDoubleClick代替onClick。 代码的结构等都不需要做改变(**对比上面的代码0跟代码**3),不需要关心处理更改button的状态这些额外判断逻辑,只需要关注业务逻辑即可,简洁优雅~
(window.slotbydup=window.slotbydup || []).push({
id: '2467140',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467141',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467142',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467143',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467148',
container: s,
size: '1000,90',
display: 'inlay-fix'先说一下分页,大部分都是滚动加载,而有上一页下一页效果的,网上很多都是同一个例子,就是data是一个String型的数组,在其最重要的getView()方法中,写得很让人看不懂,自己又参考了其它的例子,终于明白了,于是就有了以下的代码:
DsznzActivity代码:
public&class&DsznzActivity&extends&Activity&{&&
&&&&private&ArrayList&HashMap&String,&String&&&listI&&
&&&&private&ListView&list_&&
&&&&&&&&Button&btnPre,&btnN&&
&&&&View.OnClickListener&clickL&&
&&&&int&VIEW_COUNT&=&10;&&
&&&&int&index&=&0;&&
&&&&&protected&void&onCreate(Bundle&savedInstanceState)&{&&
&&&&&&&&super.onCreate(savedInstanceState);&&
&&&&&&&&setContentView(R.layout.list_ylfn);&&
&&&&&&&&list_ylfn&=&(ListView)&findViewById(R.id.listYlfn);&&
&&&&&&&&btnPre&=&(Button)&findViewById(R.id.btnPre);&&
&&&&&&&&btnNext&=&(Button)&findViewById(R.id.btnNext);&&
&&&&&&&&listItem&=&new&ArrayList&HashMap&String,&String&&();&&
&&&&&&&&HttpClient&client&=&new&DefaultHttpClient();&&
&&&&&&&&HttpEntity&entity&=&&&
&&&&&&&&try&{&&
&&&&&&&&&&&&String&uri&=&GetConnParams.getConnUri()&&
&&&&&&&&&&&&&&&&&&&&+&"/phone_listYlfn?zgy.zgynum="&+&zgynumL&&
&&&&&&&&&&&&&&&&
&&&&&&&&&&&&HttpPost&request&=&new&HttpPost(uri);&&
&&&&&&&&&&&&HttpResponse&&&
&&&&&&&&&&&&response&=&client.execute(request);&&
&&&&&&&&&&&&if&(response.getStatusLine().getStatusCode()&==&200)&{&&
&&&&&&&&&&&&&&&&entity&=&response.getEntity();&&
&&&&&&&&&&&&}&&
&&&&&&&&&&&&String&json&=&EntityUtils.toString(entity,&"UTF-8").trim();&&
&&&&&&&&&&&&JSONArray&array&=&new&JSONArray(URLDecoder.decode(json,&"utf-8"));&&
&&&&&&&&&&&&for&(int&i&=&0;&i&&&array.length();&i++)&{&&
&&&&&&&&&&&&&&&&HashMap&String,&String&&map&=&new&HashMap&String,&String&();&&
&&&&&&&&&&&&&&&&map.put("ylfn_did",&array.getJSONObject(i).getString("did"));&&
&&&&&&&&&&&&&&&&map.put("ylfn_name",&array.getJSONObject(i).getString("name"));&&
&&&&&&&&&&&&&&&&map.put("gmsfz",&array.getJSONObject(i).getString("gmsfz"));&&
&&&&&&&&&&&&&&&&listItem.add(map);&&
&&&&&&&&&&&&&&&&tmpListItem.add(map);&&
&&&&&&&&&&&&}&&
&&&&&&&&&&&&myAdapter=new&MyAdapter(this);&&
&&&&&&&&&&&&list_ylfn.setAdapter(myAdapter);&&
&&&&&&&&&&&&&&
&&&&&&&&&&&&clickListener&=&new&Button.OnClickListener()&{&&
&&&&&&&&&&&&&&&&@Override&&
&&&&&&&&&&&&&&&&public&void&onClick(View&v)&{&&
&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&switch&(v.getId())&{&&
&&&&&&&&&&&&&&&&&&&&case&R.id.btnPre:&&
&&&&&&&&&&&&&&&&&&&&&&&&preView();&&
&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&case&R.id.btnNext:&&
&&&&&&&&&&&&&&&&&&&&&&&&nextView();&&
&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&}&&
&&&&&&&&&&&&&&&&}&&
&&&&&&&&&&&&};&&
&&&&&&&&&&&&&&
&&&&&&&&&&&&
&&&&&&&&&&&&btnPre.setOnClickListener(clickListener);&&
&&&&&&&&&&&&btnNext.setOnClickListener(clickListener);&&
&&&&&&&&&&&&
&&&&&&&&&&&&checkButton();&&
&&&&&&&&}&catch&(ClientProtocolException&e)&{&&
&&&&&&&&&&&&
&&&&&&&&&&&&e.printStackTrace();&&
&&&&&&&&}&catch&(IOException&e)&{&&
&&&&&&&&&&&&
&&&&&&&&&&&&e.printStackTrace();&&
&&&&&&&&}&catch&(JSONException&e)&{&&
&&&&&&&&&&&&
&&&&&&&&&&&&e.printStackTrace();&&
&&&&&&&&}finally{&&&&&&&&&&&&&
&&&&&&&&&&&&try&{&&
&&&&&&&&&&&&&&&&if(entity!=null)&&
&&&&&&&&&&&&&&&&&&&&entity.consumeContent();&&
&&&&&&&&&&&&&&&&client.getConnectionManager().shutdown();&&
&&&&&&&&&&&&}&catch&(IOException&e)&{&&
&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&e.printStackTrace();&&
&&&&&&&&&&&&}&&
&&&&&&&&}&&&&&&&&&
&&&&public&void&preView()&{&&
&&&&&&&&index--;&&
&&&&&&&&myAdapter.notifyDataSetChanged();&&
&&&&&&&&checkButton();&&
&&&&public&void&nextView()&{&&
&&&&&&&&index++;&&
&&&&&&&&myAdapter.notifyDataSetChanged();&&
&&&&&&&&checkButton();&&
&&&&public&void&checkButton()&{&&
&&&&&&&&if&(index&&=&0)&{&&
&&&&&&&&&&&&btnPre.setEnabled(false);&&
&&&&&&&&}else{&&
&&&&&&&&&&&&btnPre.setEnabled(true);&&
&&&&&&&&}&&
&&&&&&&&if&(listItem.size()&-&index&*&VIEW_COUNT&&=&VIEW_COUNT)&{&&
&&&&&&&&&&&&btnNext.setEnabled(false);&&
&&&&&&&&}&&
&&&&&&&&else&{&&
&&&&&&&&&&&&btnNext.setEnabled(true);&&
&&&&&&&&}&&
&&&&public&class&MyAdapter&extends&BaseAdapter&{&&
&&&&&&&&Activity&&&
&&&&&&&&public&MyAdapter(Activity&a)&{&&
&&&&&&&&&&&&activity&=&a;&&
&&&&&&&&}&&
&&&&&&&&@Override&&
&&&&&&&&public&int&getCount()&{&&
&&&&&&&&&&&&
&&&&&&&&&&&&
&&&&&&&&&&&&
&&&&&&&&&&&&int&ori&=&VIEW_COUNT&*&&&
&&&&&&&&&&&&
&&&&&&&&&&&&if&(listItem.size()&-&ori&&&VIEW_COUNT)&{&&
&&&&&&&&&&&&&&&&return&listItem.size()&-&&&
&&&&&&&&&&&&}&&
&&&&&&&&&&&&
&&&&&&&&&&&&else&{&&
&&&&&&&&&&&&&&&&return&VIEW_COUNT;&&
&&&&&&&&&&&&}&&
&&&&&&&&}&&
&&&&&&&&@Override&&
&&&&&&&&public&Object&getItem(int&position)&{&&
&&&&&&&&&&&&
&&&&&&&&&&&&return&&&
&&&&&&&&}&&
&&&&&&&&@Override&&
&&&&&&&&public&long&getItemId(int&position)&{&&
&&&&&&&&&&&&
&&&&&&&&&&&&return&&&
&&&&&&&&}&&
&&&&&&&&&&&&&&&&
&&&&&&&&@Override&&
&&&&&&&&public&View&getView(int&position,&View&convertView,&ViewGroup&parent)&{&&
&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&convertView&=&LayoutInflater.from(getApplicationContext()).inflate(R.layout.ylfn,null);&&
&&&&&&&&&&&&TextView&ylfn_did_view&=&(TextView)convertView.findViewById(R.id.ylfn_did);&&
&&&&&&&&&&&&TextView&ylfn_name_view&=&(TextView)convertView.findViewById(R.id.ylfn_name);&&
&&&&&&&&&&&&TextView&ylfn_gmsfz_view&=&(TextView)convertView.findViewById(R.id.gmsfz);&&
&&&&&&&&&&&&ylfn_did_view.setText(listItem.get(position&+&index&*&VIEW_COUNT).get("ylfn_did"));&&
&&&&&&&&&&&&ylfn_name_view.setText(listItem.get(position&+&index&*&VIEW_COUNT).get("ylfn_name"));&&
&&&&&&&&&&&&ylfn_gmsfz_view.setText(listItem.get(position&+&index&*&VIEW_COUNT).get("gmsfz"));&&
&&&&&&&&&&&&return&convertV&&
&&&&&&&&}&&
&list_ylfn.xml代码:
&&&&android:layout_width="fill_parent"&&
&&&&android:layout_height="match_parent"&&
&&&&android:orientation="vertical"&&&
&&&&android:background="@drawable/beijing"
&&&&&&&&android:layout_width="fill_parent"&&
&&&&&&&&android:layout_height="36dp"&&
&&&&&&&&android:gravity="center"&&
&&&&&&&&android:orientation="horizontal"&&&
&&&&&&&&android:layout_marginTop="44dip"
&&&&&&&&android:layout_width="40dp"&&
&&&&&&&&android:layout_height="36dp"&&
&&&&&&&&&&&&android:gravity="center"&&
&&&&&&&&&&&&android:text="编号"&&
&&&&&&&&&&&&android:textSize="12sp"&
&&&&&&&&android:layout_width="160dp"&&
&&&&&&&&android:layout_height="36dp"&&
&&&&&&&&&&&&android:gravity="center"&&
&&&&&&&&&&&&android:text="姓名"&&
&&&&&&&&&&&&android:textSize="12sp"&
&&&&&&&&&&&&android:layout_width="wrap_content"&&
&&&&&&&&&&&&android:layout_height="36dp"&&
&&&&&&&&&&&&android:gravity="center"&&
&&&&&&&&&&&&android:text="身份证号"&&
&&&&&&&&&&&&android:textSize="12sp"&
&&&&&&&&android:layout_width="wrap_content"&&
&&&&&&&&android:layout_height="wrap_content"&&
&&&&&&&&android:layout_marginTop="88dp"&&&
&&&&&&&&android:layout_marginBottom="32dip"&&
&&&&&&&&android:textFilterEnabled="true"
&&&&&&&&android:layout_width="fill_parent"&&
&&&&&&&&android:layout_height="32dip"&&
&&&&&&&&android:layout_alignParentBottom="true"&&
&&&&&&&&android:layout_alignParentLeft="true"&&
&&&&&&&&android:gravity="center"&&
&&&&&&&&android:orientation="horizontal"&
&&&&&&&&&&&&android:id="@+id/btnPre"&&
&&&&&&&&&&&&android:layout_width="80dip"&&
&&&&&&&&&&&&android:layout_height="32dip"&&
&&&&&&&&&&&&android:text="上一页"&&
&&&&&&&&&&&&android:textSize="12sp"&
&&&&&&&&&&&&android:id="@+id/btnNext"&&
&&&&&&&&&&&&android:layout_width="80dip"&&
&&&&&&&&&&&&android:layout_height="32dip"&&
&&&&&&&&&&&&android:layout_marginLeft="20dip"&&
&&&&&&&&&&&&android:text="下一页"&&
&&&&&&&&&&&&android:textSize="12sp"&
ylfn.xml代码:
&&&&android:orientation="horizontal"&&
&&&&android:layout_width="fill_parent"&&
&&&&android:layout_height="wrap_content"&&
&&&&android:gravity="center"
&&&&&&&&android:layout_width="40dp"&&
&&&&&&&&android:layout_height="36dp"&&
&&&&&&&&android:id="@+id/ylfn_did"&&
&&&&&&&&android:gravity="center"&&
&&&&&&&&android:textSize="12sp"&&
&&&&&&&&android:textColor="#000000"
&&&&&&&&android:layout_width="80dp"&&
&&&&&&&&android:layout_height="36dp"&&
&&&&&&&&android:id="@+id/ylfn_name"&&
&&&&&&&&android:gravity="center"&&
&&&&&&&&android:textSize="12sp"&&
&&&&&&&&android:textColor="#000000"
&&&&&&&&android:layout_width="wrap_content"&&
&&&&&&&&android:layout_height="36dp"&&
&&&&&&&&android:id="@+id/gmsfz"&&
&&&&&&&&android:gravity="center"&&
&&&&&&&&android:textSize="12sp"&&
&&&&&&&&android:textColor="#000000"
阅读(...) 评论()PHP简单实现上一页下一页功能示例,上一页下一页-android100学习网
PHP简单实现上一页下一页功能示例,上一页下一页
PHP简单实现上一页下一页功能示例,上一页下一页 本文实例讲述了PHP简单实现上一页下一页功能。分享给大家供大家参考,具体如下: 思路整理: 现在好多人用id的增1和减1实现上一篇和下一篇,但是...
PHP简单实现上一页下一页功能示例,上一页下一页
本文实例讲述了PHP简单实现上一页下一页功能。分享给大家供大家参考,具体如下:
现在好多人用id的增1和减1实现上一篇和下一篇,但是难道文章ID不会断了吗?所以你要知道上个ID和个ID是多少就OK了。
那怎么解决这个问题呢,很简单!
假如这篇文章的ID200
&a href="?action=up&id=200"&上一篇&/a&
&a href="?action=down&id=200"&下一篇&/a&
如果是实现上一篇就在action=up页面写函数
$id= $_GET['id'];
//上一篇:
$sql= select * from article where id & '.$id.' order by id desc limit 0,1';
$rs= mysql_query($sql);
$row= mysql_fetch_array ($rs);
//下一篇:
$sql= select * from article where id & '.$id.' order by id asc limit 0,1';
$rs= mysql_query($sql);
$row= mysql_fetch_array ($rs);
原理,查询比当前ID小(where id & '.$id.'上一篇)和比当前ID大(where id & '.$id.'下一篇)的1条(limit 0,1)数据,并按降序(desc,上一篇)和升序(asc,下一篇)显示出来,当只取一篇的时候,可以省略降序或升序。
具体实现代码:注需要传递参数
前台在上一篇,下一篇处调用:
echo GetPreNext(pre,news,$_REQUEST[catid],$_REQUEST[id]);?&
//显示上一篇下一篇
function GetPreNext($gtype,$table,$catid,$id){
$preR=mysql_fetch_array(mysql_query("select * from ".$table." where catid=".$catid." and id&$id order by id desc limit 0,1"));//id比传入id小的最近一条
$nextR=mysql_fetch_array(mysql_query("select * from ".$table." where catid=".$catid." and id&$id order by id asc limit 0,1"));//id比传入id大的最近一条
$next = (is_array($nextR) ? " where id={$nextR['id']} " : ' where 1&2 ');
$pre = (is_array($preR) ? " where id={$preR['id']} " : ' where 1&2 ');
$query = "Select * from ".$table." ";
$nextRow =mysql_query($query.$next);
$preRow = mysql_query($query.$pre);
if($PreNext=mysql_fetch_array($preRow))
echo $PreNext['pre'] = "上一篇:&a href='newsshow.php?id=".$preR['id']."&&catid=".$catid."'&".$PreNext['title']."&/a& ";
echo $PreNext['pre'] = "上一篇:没有了 ";
if($PreNext=mysql_fetch_array($nextRow))
echo $PreNext['next'] = "下一篇:&a href='newsshow.php?id=".$nextR['id']."&&catid=".$catid."'&".$PreNext['title']."&/a& ";
echo $PreNext['next'] = "下一篇:没有了 ";
代码经测试可用
更多关于PHP相关内容感兴趣的读者可查看本站专题:《php常见数据库操作技巧汇总》、《PHP数组(Array)操作技巧大全》、《php排序算法总结》、《PHP常用遍历算法与技巧总结》、《PHP数据结构与算法教程》、《php程序设计算法总结》、《PHP数学运算技巧总结》、《php正则表达式用法总结》、《PHP运算与运算符用法总结》及《php字符串(string)用法总结》
希望本文所述对大家PHP程序设计有所帮助。

我要回帖

更多关于 ppt点击进入下一页 的文章

 

随机推荐