2016-08-25 51 views
0

我一直在試圖爲我的微調實現SwipeRefreshLayout的功能,但沒有任何事情發生。有沒有人有一個想法,爲什麼這不起作用?微調器第一次加載數據沒有問題,但是當我做拖動手勢時,什麼也沒有發生。沒有顏色,沒有旋轉,沒有的System.out.println,沒有什麼:(SwipeRefreshLayout與微調

這是我的XML和Java代碼。

XML

 <android.support.v4.widget.SwipeRefreshLayout 
      android:layout_width="0dp" 
      android:layout_height="44dp" 
      android:id="@+id/swipe_main"> 
      <Spinner 
       android:id="@+id/data_spinner" 
       android:layout_width="0dp" 
       android:layout_height="44dp"/> 
     </android.support.v4.widget.SwipeRefreshLayout> 

JAVA

spinner = (Spinner) findViewById(R.id.data_spinner); 
    adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, dataArrayList); 
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
    spinner.setAdapter(adapter); 
    spinner.setOnItemSelectedListener(this); 

    swipe = (SwipeRefreshLayout) findViewById(R.id.swipe_main); 
    swipe.setColorSchemeColors(android.R.color.holo_blue_bright, android.R.color.holo_green_light, android.R.color.holo_orange_light, android.R.color.holo_red_light); 
    swipe.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() { 
     @Override 
     public void onRefresh() { 
      adapter=new ArrayAdapter<String>(MainActivity.this,android.R.layout.simple_spinner_item,dataArrayList); 
      adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
      spinner.setAdapter(adapter); 
      swipe.setRefreshing(false); 
      System.out.println("Is swipe refreshing?..."); 

     } 
    }); 

謝謝很多提前!

+0

您是否在嘗試打開微調框時滑動(作爲下拉菜單)?我認爲這是行不通的。 – sJy

+0

謝謝@sJy。是的,我打開Spinner時想刷一下。所以這不是這樣做的,是吧? : -/ –

+0

親愛的@sJy。我已經在這個http://stackoverflow.com/questions/23830594/swiperefreshlayout-can-host-only-one-direct-child上實現了答案,在一個RelativeLayout中設置了Spinner,我可以更清楚地看到你的意思。 SwipeRefreshLayout正在工作,但只在選定的一個小元素的區域。你知道如何刷新微調,當它被打開的任何機會? –

回答

1

SwipeRefreshLayout在其子視圖上滑動時起作用。

對於您的情況,當單擊微調框時,它將打開列表DropdownPopup,它是ListPopupWindow的一個子類。這不是SwipeRefreshLayout的子視圖,但彈出窗口&因此刷卡不起作用。但是,如果您在未打開下拉菜單時輕掃微調器,它就會起作用。

+0

這是正確的,@sJy。我仍然在搞清楚如何在打開的Spinner上執行拖拽手勢時執行一些操作,這顯然不是通過SwipeRefreshLayout進行的。 –

0

請在下面的代碼添加到您的onCreate方法初始化後刷卡urse

swipe.post(new Runnable() { 
@Override 
public void run() { 
    swipe.setRefreshing(true); 
} 
}); 

我希望這會幫助你,隨時發表評論。

+0

Thanks @Mahamadali。我現在可以看到這個小圓圈,但它不會消失。而且,正如sJy指出的那樣,這甚至可能不是實施刷卡更新Spinner內部列表的方式。 –

+0

事實上,我根據需要回答你只是想讓那個圓圈指示器顯示@MarieAmida。 – Mahamadali