0015461k9mn11nr1tjhyo1  

前陣子有個需求,一個顯示視頻的listview,每個item中包含點播次數,點擊一次立即加1,並動態顯示在介面上。看了好多資料,拜讀了很多帖子,也試了很多方法,用notifyDataSetChanged()都不行。看到優酷用戶端(塞班系統的)也不能更新次數,本來都洩氣了,結果被論壇裡一個牛人說:“你很強,研究出來分享下”,硬著頭皮上唄。但我覺得理論上肯定是可以實現的,經過艱苦卓絕的嘗試,終於皇天不負有心人。現在和大家分享一下經驗,相信一定對很多人的應用有用,也歡迎大家拍磚。
截圖如下:

1.在點擊item的監聽程式onItemClick()中調用播放方法並加1,發送消息給handler更新次數

code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
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

code
1
2
3
4
5
6
case 5:
 
listAdapter=null;                               
listView.setAdapter(getAdapter(newsList));
 
break;

這個方法我不知道是不是正規,希望高手指點。另外還有一點問題就是每次重新載入都是在第一頁,如果當時您不在第一頁播放的話播放完回來就找不著北了,不過這個問題理論上也是可以解決的。

創作者介紹
創作者 shadow 的頭像
shadow

資訊園

shadow 發表在 痞客邦 留言(0) 人氣()