2013-06-12 39 views
3

如何創建一個拉下來刷新Android的列表?如何給列表視圖下拉到刷新功能在android

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.pull_to_refresh); 

    // Set a listener to be invoked when the list should be refreshed. 
    ((PullToRefreshListView) getListView()).setOnRefreshListener(new OnRefreshListener() { 
     @Override 
     public void onRefresh() { 
      // Do work to refresh the list here. 
      new GetDataTask().execute(); 
     } 
    }); 

    mListItems = new LinkedList<String>(); 
    mListItems.addAll(Arrays.asList(mStrings)); 

    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, 
      android.R.layout.simple_list_item_1, mListItems); 

    setListAdapter(adapter); 
}` 
+2

請解釋一下什麼是你的問題正是... – OcuS

回答

3

這不是一個機器人的設計模式。然而,this優秀的庫讓你輕鬆做到。看看這些例子。

希望我幫了忙。

編輯 - 2015年12月6日 - 忽略前面的語句:

現在這是通過在Android SDK的完全支持的設計模式。

這很簡單,您需要使用SwipeRefreshLayout作爲您的列表的父視圖(或其他可能需要刷新的數據)。您可以將任何視圖作爲子視圖來使用,它將爲該視圖創建一個Pull-To-Refresh動畫。

Aftewards,你只需要實現SwipeRefreshLayout.OnRefreshListener處理實際數據刷新的網絡代碼:

public class MainActivity extends FragmentActivity implements OnRefreshListener { 

private SwipeRefreshLayout _pullToRefreshLayout; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    setContentView(R.layout.activity_main); 

    _pullToRefreshLayout = (SwipeRefreshLayout) findViewById(R.id.swipe_layout); 
    _pullToRefreshLayout.setOnRefreshListener(this); 

    super.onCreate(savedInstanceState); 
} 

@Override 
public void onRefresh() { 
    //When this is called, your view has a little loader showing to show the user that a network call is in progress 
    Log.i("SO17065814", "Starting refresh..."); 

    new Handler().postDelayed(new Runnable() { 
     @Override 
     public void run() { 
      mSwipeRefreshLayout.setRefreshing(false); //This stops the refresh animation 
      Log.i("SO17065814", "Ending refresh..."); 
     } 
    }, 5000); 
} 

}

+0

你的鏈接引導到舊的棄用版本。這個庫的當前版本可以在這裏找到(https://github.com/chrisbanes/ActionBar-PullToRefresh)。感謝克里斯巴恩斯爲這個偉大的工作! – Michael