2013-01-07 34 views
0

由於ListView中的項目內容有點複雜,我的ListView需要幾秒鐘才能滾動到特定項目。所以我想添加一個不確定的進度條來使其平滑。Android:我想在ListView選擇更改後隱藏進度條

要滾動到特定的項目,我使用listView.setSelection(n)來做到這一點。然後,我傾向於使用「setOnItemSelectedListener」事件處理程序在滾動後隱藏進度條。但事件處理程序不會接到呼叫。

可能是我的概念是完全錯誤的,我不知道該怎麼做(使用像這種情況下的進度條)。如果你給我看這個概念,更多的細節也是值得歡迎的。

非常感謝。

public class ListViewAdapter extends BaseAdapter { 

private ProgressBar progressBar; 
private Handler progressBarHandler = new Handler(); 
boolean isProgressBarDone; 

private void jumpToSelectedItem(View arg0) { 
     ... 
     listView.setSelection(selectedDaYunItem); 
} 

ListView listView = (ListView)((MyActivity)cellView.getContext()).findViewById(R.id.listview); 
listView.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 
     // onItemSelected event handler has not triggered. 
     @Override 
     public void onItemSelected(AdapterView<?> arg0, 
       View arg1, int arg2, long arg3) { 
      isProgressBarDone = true; 
     } 

     @Override 
     public void onNothingSelected(AdapterView<?> arg0) { 
      // TODO Auto-generated method stub     
     } 
}); 


public class LiouYunCellAdapter { 

    cellView.setOnTouchListener(new View.OnTouchListener() { 

     // It takes a little seconds to operate. 
     private void jumpToSelectedItem(View arg0) { 
      .... 
     } 

     @Override 
     public boolean onTouch(View arg0, MotionEvent event) { 
      if (event.getAction() == MotionEvent.ACTION_DOWN) { 
       progressBar = findProgressBar(arg0); 

       // ProgressBar start. 
       new Thread(new Runnable() { 
        public void run() { 
         isProgressBarDone = false; 
         while (!isProgressBarDone) {             
          // Update the progress bar 
          progressBarHandler.post(new Runnable() { 
           public void run() { 
              progressBar.setVisibility(View.VISIBLE); 
            } 
           } 
          });           
         }                    
        }).start(); 

        jumpToSelectedItem(arg0); 
       }    
      } 

      return true; 
     } 
    });  
    // End setOnTouchListener(). 

}  
// end class LiouYunCellAdapter. 

}

+0

你可以張貼一些代碼,所以我們可以幫助? – Rarw

+0

好吧,我已經添加代碼到崗位。 – Diviner

回答

0

好吧,我不看你任何觸發的onclick excpet設置isProgressBarDone爲true。你需要做的是使用下面的fomat(你已經擁有),但是把你的代碼滾動到那裏。 OnClick,您將獲得所選內容的位置。使用該ID然後觸發滾動。你也應該在這裏啓動你的進度條,並在該方法結束時結束它。現在你的進度條正在自己的線程上運行,我沒有看到任何阻止它的東西。

listView.setOnItemClickListener(新OnItemClickListener(){

 @Override 
     public void onItemClick(AdapterView<?> parent, View view, int position,long id) { 

      //You will get the positino of the item clicked here 
      //This is where your code to scroll should go as well as 
      //starting the progress bar 
     } 



}); 

看看我連接到下面的例子。它涉及使用progressdialog的同時加載自定義列表視圖,但我認爲這個概念適用於你的代碼。你需要做的是,當你調用進度條,並駁回其固定。

http://www.softwarepassion.com/android-series-custom-listview-items-and-adapters/

+0

謝謝拉夫。讓我試一試,稍後再報告。 – Diviner