前阵子有个需求,一个显示视频的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;
这个方法我不知道是不是正规,希望高手指点。另外还有一点问题就是每次重新加载都是在第一页,如果当时您不在第一页播放的话播放完回来就找不着北了,不过这个问题理论上也是可以解决的。