android 实现无刷新 动态添加记录
需求在客户端显示记录页向服务器添加记录,添加完成后页面更新。
详情
最初想用ListView实现,但后来还是通过LinearLayout动态添加layout实现的,一个原因是考虑到数据量不大(5条以内),另外一个原因是由于向ListView中添加数据需要刷新所有记录,个人体验不好,再有就是再添加一条记录时是有一个添加动画,ListView不方便实现,或者说我没有想到只添加一条记录,其他记录不变化的方法。
问题
目前可实现动态添加,但每天记录都添加至页面的下面,现在想将每次添加的新记录添加至页面的最顶端,如何动态添加? 用ListView可否实现,要保证只有新添加的记录执行添加动画。
不知道我描述的是否清楚,若有不清楚的地方,可提出,我再详加说明,最后希望各位不吝赐教,谢谢
Android listview 动画 --------------------编程问答-------------------- 怎么就没个人回呢? --------------------编程问答-------------------- 哎 这CSDN是一茬儿不如一茬儿了~ --------------------编程问答-------------------- 用listview可行。
只需要设置动画监听的end方法中刷新listview即可。 --------------------编程问答-------------------- 可不可以直接将item添加至listview顶部呢?这样就不用刷新了。 另外添加一个item的动画怎么执行呢,在哪儿调用啊 --------------------编程问答--------------------
我们项目做得是继承一个listview,然后在listview中写方法。
添加的话先是把要添加的item放到adapter的list中去。
然后执行动画。
监听动画的end,在end内调用notifychange --------------------编程问答--------------------
可不可以直接将item添加至listview顶部呢?这样就不用刷新了。 另外添加一个item的动画怎么执行呢,在哪儿调用啊
用listview可行。
只需要设置动画监听的end方法中刷新listview即可。
我们项目做得是继承一个listview,然后在listview中写方法。
添加的话先是把要添加的item放到adapter的list中去。
然后执行动画。
监听动画的end,在end内调用notifychange
动画的执行是由你的事件触发,不是在getView里执行,getview只负责显示。
具体的过程大概是
1.用户点击更新按钮来触发这个更新事件。
2.把更新的item放到adapter的数据的末端,但是在getView中并不现实新加的项目。刷新listview。这步相当于把listview给整体扩大一格。
3.把新item放到list首位。同时调用动画效果。旧item同时往下移动一格,新item渐变出现(这个效果可以随意做)。
4.监听动画完成事件,在onAnimationEnd方法内刷新listView即可
整个刷新流程结束。
对于用户选择不更新的办法,只需要将上述步骤倒过来执行。
--------------------编程问答--------------------
执行动画说的是新item的出现,和整体listView的items的往下移动
动画的执行是由你的事件触发,不是在getView里执行,getview只负责显示。
具体的过程大概是
1.用户点击更新按钮来触发这个更新事件。
2.把更新的item放到adapter的数据的末端,但是在getView中并不现实新加的项目。刷新listview。这步相当于把listview给整体扩大一格。
3.把新item放到list首位。同时调用动画效果。旧item同时往下移动一格,新item渐变出现(这个效果可以随意做)。
4.监听动画完成事件,在onAnimationEnd方法内刷新listView即可
整个刷新流程结束。
对于用户选择不更新的办法,只需要将上述步骤倒过来执行。
不好意思 再问一下 ,在第3步里 把“新item防止list首位” 是放到ListView的首位吗,这个怎么该怎么放呢?“旧item同时往下移动一格”是需要自己用动画实现吗?? 不好意思麻烦了,有没有demo可以给我看下呢 --------------------编程问答--------------------
执行动画说的是新item的出现,和整体listView的items的往下移动
动画的执行是由你的事件触发,不是在getView里执行,getview只负责显示。
具体的过程大概是
1.用户点击更新按钮来触发这个更新事件。
2.把更新的item放到adapter的数据的末端,但是在getView中并不现实新加的项目。刷新listview。这步相当于把listview给整体扩大一格。
3.把新item放到list首位。同时调用动画效果。旧item同时往下移动一格,新item渐变出现(这个效果可以随意做)。
4.监听动画完成事件,在onAnimationEnd方法内刷新listView即可
整个刷新流程结束。
对于用户选择不更新的办法,只需要将上述步骤倒过来执行。
是通过这个方法加吗 listView.addView(child,postion),我先试试
执行动画说的是新item的出现,和整体listView的items的往下移动
动画的执行是由你的事件触发,不是在getView里执行,getview只负责显示。
具体的过程大概是
1.用户点击更新按钮来触发这个更新事件。
2.把更新的item放到adapter的数据的末端,但是在getView中并不现实新加的项目。刷新listview。这步相当于把listview给整体扩大一格。
3.把新item放到list首位。同时调用动画效果。旧item同时往下移动一格,新item渐变出现(这个效果可以随意做)。
4.监听动画完成事件,在onAnimationEnd方法内刷新listView即可
整个刷新流程结束。
对于用户选择不更新的办法,只需要将上述步骤倒过来执行。
不是。应该是把item的数据放到adapter中的list的首位
一般的adapter都会维护一个list,来存放它所有item的数据,
然后在getView中通过这个list,来生成出一个要显示的View
比如说可以是List<String>
然后在getView中可以
TextView tv = new TextView(context);
tv.setText(list.get(position));
return tv;
是这个意思。
--------------------编程问答--------------------
是通过这个方法加吗 listView.addView(child,postion),我先试试
执行动画说的是新item的出现,和整体listView的items的往下移动
动画的执行是由你的事件触发,不是在getView里执行,getview只负责显示。
具体的过程大概是
1.用户点击更新按钮来触发这个更新事件。
2.把更新的item放到adapter的数据的末端,但是在getView中并不现实新加的项目。刷新listview。这步相当于把listview给整体扩大一格。
3.把新item放到list首位。同时调用动画效果。旧item同时往下移动一格,新item渐变出现(这个效果可以随意做)。
4.监听动画完成事件,在onAnimationEnd方法内刷新listView即可
整个刷新流程结束。
对于用户选择不更新的办法,只需要将上述步骤倒过来执行。
不是。应该是把item的数据放到adapter中的list的首位
一般的adapter都会维护一个list,来存放它所有item的数据,
然后在getView中通过这个list,来生成出一个要显示的View
比如说可以是List<String>
然后在getView中可以
TextView tv = new TextView(context);
tv.setText(list.get(position));
return tv;
是这个意思。
哦了解了 “旧item同时往下移动一格,新item渐变出现” 这个是listView和item同时执行动画吗 ,这一步item 其实是加到了ListView外面是吧 刷新完成后 才加进ListView
是通过这个方法加吗 listView.addView(child,postion),我先试试
执行动画说的是新item的出现,和整体listView的items的往下移动
动画的执行是由你的事件触发,不是在getView里执行,getview只负责显示。
具体的过程大概是
1.用户点击更新按钮来触发这个更新事件。
2.把更新的item放到adapter的数据的末端,但是在getView中并不现实新加的项目。刷新listview。这步相当于把listview给整体扩大一格。
3.把新item放到list首位。同时调用动画效果。旧item同时往下移动一格,新item渐变出现(这个效果可以随意做)。
4.监听动画完成事件,在onAnimationEnd方法内刷新listView即可
整个刷新流程结束。
对于用户选择不更新的办法,只需要将上述步骤倒过来执行。
不是。应该是把item的数据放到adapter中的list的首位
一般的adapter都会维护一个list,来存放它所有item的数据,
然后在getView中通过这个list,来生成出一个要显示的View
比如说可以是List<String>
然后在getView中可以
TextView tv = new TextView(context);
tv.setText(list.get(position));
return tv;
是这个意思。
同时执行也可以,先后顺序也可以。item已经加到list的adapter里了
我是直接写在自定义listView里面了
有个public addItem方法 穿进去item的数据
然后里面有一些private doAnimation方法在addItem里面调用。 --------------------编程问答--------------------
哦了解了 “旧item同时往下移动一格,新item渐变出现” 这个是listView和item同时执行动画吗 ,这一步item 其实是加到了ListView外面是吧 刷新完成后 才加进ListView
是通过这个方法加吗 listView.addView(child,postion),我先试试
执行动画说的是新item的出现,和整体listView的items的往下移动
动画的执行是由你的事件触发,不是在getView里执行,getview只负责显示。
具体的过程大概是
1.用户点击更新按钮来触发这个更新事件。
2.把更新的item放到adapter的数据的末端,但是在getView中并不现实新加的项目。刷新listview。这步相当于把listview给整体扩大一格。
3.把新item放到list首位。同时调用动画效果。旧item同时往下移动一格,新item渐变出现(这个效果可以随意做)。
4.监听动画完成事件,在onAnimationEnd方法内刷新listView即可
整个刷新流程结束。
对于用户选择不更新的办法,只需要将上述步骤倒过来执行。
不是。应该是把item的数据放到adapter中的list的首位
一般的adapter都会维护一个list,来存放它所有item的数据,
然后在getView中通过这个list,来生成出一个要显示的View
比如说可以是List<String>
然后在getView中可以
TextView tv = new TextView(context);
tv.setText(list.get(position));
return tv;
是这个意思。
同时执行也可以,先后顺序也可以。item已经加到list的adapter里了
我是直接写在自定义listView里面了
有个public addItem方法 穿进去item的数据
然后里面有一些private doAnimation方法在addItem里面调用。
请问 这个类 能让我看看吗 如果不方便就算了
哦了解了 “旧item同时往下移动一格,新item渐变出现” 这个是listView和item同时执行动画吗 ,这一步item 其实是加到了ListView外面是吧 刷新完成后 才加进ListView
是通过这个方法加吗 listView.addView(child,postion),我先试试
执行动画说的是新item的出现,和整体listView的items的往下移动
动画的执行是由你的事件触发,不是在getView里执行,getview只负责显示。
具体的过程大概是
1.用户点击更新按钮来触发这个更新事件。
2.把更新的item放到adapter的数据的末端,但是在getView中并不现实新加的项目。刷新listview。这步相当于把listview给整体扩大一格。
3.把新item放到list首位。同时调用动画效果。旧item同时往下移动一格,新item渐变出现(这个效果可以随意做)。
4.监听动画完成事件,在onAnimationEnd方法内刷新listView即可
整个刷新流程结束。
对于用户选择不更新的办法,只需要将上述步骤倒过来执行。
不是。应该是把item的数据放到adapter中的list的首位
一般的adapter都会维护一个list,来存放它所有item的数据,
然后在getView中通过这个list,来生成出一个要显示的View
比如说可以是List<String>
然后在getView中可以
TextView tv = new TextView(context);
tv.setText(list.get(position));
return tv;
是这个意思。
同时执行也可以,先后顺序也可以。item已经加到list的adapter里了
我是直接写在自定义listView里面了
有个public addItem方法 穿进去item的数据
然后里面有一些private doAnimation方法在addItem里面调用。
个人代码可以给你。。。不过这是公司的代码,还没开源,虽然是我写的但是也是公司的版权,不好意思了,这个因为签过保密协议,要承担责任的。不过你有什么问题我可以帮你解答。 --------------------编程问答--------------------
请问 这个类 能让我看看吗 如果不方便就算了
哦了解了 “旧item同时往下移动一格,新item渐变出现” 这个是listView和item同时执行动画吗 ,这一步item 其实是加到了ListView外面是吧 刷新完成后 才加进ListView
是通过这个方法加吗 listView.addView(child,postion),我先试试
执行动画说的是新item的出现,和整体listView的items的往下移动
动画的执行是由你的事件触发,不是在getView里执行,getview只负责显示。
具体的过程大概是
1.用户点击更新按钮来触发这个更新事件。
2.把更新的item放到adapter的数据的末端,但是在getView中并不现实新加的项目。刷新listview。这步相当于把listview给整体扩大一格。
3.把新item放到list首位。同时调用动画效果。旧item同时往下移动一格,新item渐变出现(这个效果可以随意做)。
4.监听动画完成事件,在onAnimationEnd方法内刷新listView即可
整个刷新流程结束。
对于用户选择不更新的办法,只需要将上述步骤倒过来执行。
不是。应该是把item的数据放到adapter中的list的首位
一般的adapter都会维护一个list,来存放它所有item的数据,
然后在getView中通过这个list,来生成出一个要显示的View
比如说可以是List<String>
然后在getView中可以
TextView tv = new TextView(context);
tv.setText(list.get(position));
return tv;
是这个意思。
同时执行也可以,先后顺序也可以。item已经加到list的adapter里了
我是直接写在自定义listView里面了
有个public addItem方法 穿进去item的数据
然后里面有一些private doAnimation方法在addItem里面调用。
个人代码可以给你。。。不过这是公司的代码,还没开源,虽然是我写的但是也是公司的版权,不好意思了,这个因为签过保密协议,要承担责任的。不过你有什么问题我可以帮你解答。
比如说你的一个后台更新事件的响应,或者刷新按钮被点击事件的响应,来触发listView.addItem(Item)
add方法中,首先把参数item加入到adapter的list中去(最后并隐藏),刷新;
然后把item放到首位 position=0
从p=1的位置做循环
循环{
doAnimation(p,p+1)//这部就是把从1开始的旧项目往下移一个。如果p是最后一个,设置end监听。
}
动画完了之后刷新list即可。 --------------------编程问答--------------------
其实这是一个事件驱动。
比如说你的一个后台更新事件的响应,或者刷新按钮被点击事件的响应,来触发listView.addItem(Item)
add方法中,首先把参数item加入到adapter的list中去(最后并隐藏),刷新;
然后把item放到首位 position=0
从p=1的位置做循环
循环{
doAnimation(p,p+1)//这部就是把从1开始的旧项目往下移一个。如果p是最后一个,设置end监听。
}
动画完了之后刷新list即可。
我是想知道 执行每个执行下移动画itemView是怎么取得的? 可不可以让他们整体下移,一个一个的下移,如果item多些 会不会就比较慢?还有 下移一格,这个移动距离是怎么控制的呢? --------------------编程问答--------------------
其实这是一个事件驱动。
比如说你的一个后台更新事件的响应,或者刷新按钮被点击事件的响应,来触发listView.addItem(Item)
add方法中,首先把参数item加入到adapter的list中去(最后并隐藏),刷新;
然后把item放到首位 position=0
从p=1的位置做循环
循环{
doAnimation(p,p+1)//这部就是把从1开始的旧项目往下移一个。如果p是最后一个,设置end监听。
}
动画完了之后刷新list即可。
我是想知道 执行每个执行下移动画itemView是怎么取得的? 可不可以让他们整体下移,一个一个的下移,如果item多些 会不会就比较慢?还有 下移一格,这个移动距离是怎么控制的呢?
做动画你要取得一个view主体。整体下移关键他们不是一个整体。所以不可以。目前我们压力测试300个也是丝般顺滑(nexus10)。其实我们做的是拖拽的gridView,逻辑上要更难一些。
距离可以拿到p+1点的y 就是距离 --------------------编程问答--------------------
其实这是一个事件驱动。
比如说你的一个后台更新事件的响应,或者刷新按钮被点击事件的响应,来触发listView.addItem(Item)
add方法中,首先把参数item加入到adapter的list中去(最后并隐藏),刷新;
然后把item放到首位 position=0
从p=1的位置做循环
循环{
doAnimation(p,p+1)//这部就是把从1开始的旧项目往下移一个。如果p是最后一个,设置end监听。
}
动画完了之后刷新list即可。
我是想知道 执行每个执行下移动画itemView是怎么取得的? 可不可以让他们整体下移,一个一个的下移,如果item多些 会不会就比较慢?还有 下移一格,这个移动距离是怎么控制的呢?
做动画你要取得一个view主体。整体下移关键他们不是一个整体。所以不可以。目前我们压力测试300个也是丝般顺滑(nexus10)。其实我们做的是拖拽的gridView,逻辑上要更难一些。
距离可以拿到p+1点的y 就是距离
这个View怎么取得呢,就是adapter中getView 返回的View对象。还有这个动画是在什么情况下执行呢
其实这是一个事件驱动。
比如说你的一个后台更新事件的响应,或者刷新按钮被点击事件的响应,来触发listView.addItem(Item)
add方法中,首先把参数item加入到adapter的list中去(最后并隐藏),刷新;
然后把item放到首位 position=0
从p=1的位置做循环
循环{
doAnimation(p,p+1)//这部就是把从1开始的旧项目往下移一个。如果p是最后一个,设置end监听。
}
动画完了之后刷新list即可。
我是想知道 执行每个执行下移动画itemView是怎么取得的? 可不可以让他们整体下移,一个一个的下移,如果item多些 会不会就比较慢?还有 下移一格,这个移动距离是怎么控制的呢?
做动画你要取得一个view主体。整体下移关键他们不是一个整体。所以不可以。目前我们压力测试300个也是丝般顺滑(nexus10)。其实我们做的是拖拽的gridView,逻辑上要更难一些。
距离可以拿到p+1点的y 就是距离
getChildAt方法取得view
动画执行是根据事件驱动。这就得看腻了
补充:移动开发 , Android