`
hilary3113
  • 浏览: 262501 次
  • 性别: Icon_minigender_1
  • 来自: 邯郸
社区版块
存档分类
最新评论

ListView中动态刷新数据的另类方法

阅读更多

前阵子有个需求,一个显示视频的listview,每个item中包含点播次数,点击一次立即加1,并动态显示在界面上。看了好多资料,拜读了很多帖子,也试了很多方法,用notifyDataSetChanged()都不行。看到优酷客户端(塞班系统的)也不能更新次数,本来都泄气了,结果被论坛里一个牛人说:“你很强,研究出来分享下”,硬着头皮上呗。但我觉得理论上肯定是可以实现的,经过艰苦卓绝的尝试,终于皇天不负有心人。现在和大家分享一下经验,相信一定对很多人的应用有用,也欢迎大家拍砖。

1.在点击item的监听程序onItemClick()中调用播放方法并加1,发送消息给handler更新次数

private void updatePalyNum(final int position) {
   new Thread() {
     public void run() {
    try {
                                        
boolean updateFlag = videoWS.updateData(getString(R.string.WSURL_update),newsList.get(position).getVideoID());        

                                        
if(updateFlag){
                                                
int playNum=Integer.parseInt(newsList.get(position).getPlayNum());
playNum++;
                                                
newsList.get(position).setPlayNum(playNum+"");
                                                
Uri uri = Uri.parse(newsList.get(position).getUrl());
Intent intent = new Intent(Intent.ACTION_VIEW,uri);
intent.setType("video/*");
intent.setDataAndType(uri , "video/*");
startActivity(intent);
                                                
Thread.sleep(400);        
                                                
handler.sendEmptyMessage(5);
                                        }
                                        
                                     
                             }catch (InterruptedException e) {

                                        e.printStackTrace();
                                }
                        }
                }.start();
        }

 2.handler处理刷新listview

case 5:

listAdapter=null;                                
listView.setAdapter(getAdapter(newsList));

break;

 这个方法我不知道是不是正规,希望高手指点。另外还有一点问题就是每次重新加载都是在第一页,如果当时您不在第一页播放的话播放完回来就找不着北了,不过这个问题理论上也是可以解决的。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics