2012-07-19 15 views
0

我正在滾動的列表視圖。 我想上加載列表視圖的滾動數據,我這樣做是這樣的:在Android的滾動問題需要幫助

public void onScroll(AbsListView view, int firstVisibleItem, 
      int visibleItemCount, int totalItemCount) { 
     if (loading) { 
      if (totalItemCount > previousTotal) { 
       loading = false; 
       previousTotal = totalItemCount; 
      } 
     } else { 
      if ((totalItemCount - visibleItemCount) <= (firstVisibleItem + threshold)) { 
       new loadMoreListView().execute(); 

       int currentPosition = lv.getFirstVisiblePosition(); 
       View v = lv.getChildAt(0); 
       int distFromTop = (v == null) ? 0 : v.getTop(); 
       lv.setSelectionFromTop(currentPosition, distFromTop); 
      } 
     } 
    } 

loadMoreListView是使用AsynTask其負載數據類。 我的問題是,當我來到第10位的列表視圖開始加載數據的預期,但它凍結了整個列表視圖。我無法與listview交互,直到數據加載。有什麼解決方案可以同時加載數據和與listview進行交互。 請不要建議無盡的適配器或總理。我已經嘗試過那個。 任何幫助是高度讚賞。 在此先感謝。

+0

你是否在else block中設置了loading = true? – user1049280 2012-07-19 09:17:21

+0

列表凍結多久? loadMoreListView是否真的異步工作? – Niko 2012-07-19 09:17:24

+0

它凍結近2-3秒。 – Neha 2012-07-19 09:20:05

回答

0
public class LListviewsActivity extends Activity { 
ListView myList; 
Button getChoice; 
String[] listContent = { 
     "January", 
     "February", 
     "March", 
     "April", 
     "May", 
     "June", 
     "July", 
     "August", 
     "September", 
     "October", 
     "November", 
     "December" 
}; 

/** Called when the activity is first created. */ 
@Override 
    public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    myList = (ListView)findViewById(R.id.list); 
    getChoice = (Button)findViewById(R.id.getchoice); 
    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, 
      android.R.layout.simple_list_item_multiple_choice,listContent); 
    myList.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE); 
    myList.setAdapter(adapter); 
    getChoice.setOnClickListener(new Button.OnClickListener(){ 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 
         String selected = ""; 
       int cntChoice = myList.getCount(); 
       SparseBooleanArray sparseBooleanArray =    
    myList.getCheckedItemPositions(); 
      for(int i = 0; i < cntChoice; i++){ 
       if(sparseBooleanArray.get(i)) { 
        selected +=      myList.getItemAtPosition(i).toString() + "\n"; 
       } 
      } Toast.makeText(LListviewsActivity.this, selected   ,Toast.LENGTH_LONG).show(); 
     } 
     }); 
    } 
    } 
0

試試這個,它的工作

list_event.setOnScrollListener(new AbsListView.OnScrollListener() { 

     @Override 
     public void onScroll(AbsListView view, int firstVisibleItem, 
       int visibleItemCount, int totalItemCount) { 
      // TODO Auto-generated method stub 

     } 

     @Override 
     public void onScrollStateChanged(AbsListView view, int scrollState) { 
      if (scrollState != 0) 
       eventAdapter.isScrollingEvent = true; 
      else { 
       eventAdapter.isScrollingEvent = false; 
       eventAdapter.notifyDataSetChanged(); 
      } 
     } 
    }); 

寫布爾isScrollingEvent =真
和您的適配器是liake eventAdapter

檢查這個環節是非常使用全 List View Scroll Not Smooth