2015-11-03 3 views
2

Я знаю, что подобный вопрос задают много раз, но он не мог решить мою проблему. Поэтому я спрашиваю здесь. У меня есть recyclerView с swiperefresh layout. Я использовал этот кодRecyclerView с SwipeRefreshLayout не работает последовательно

recyclerView1.addOnScrollListener(new RecyclerView.OnScrollListener() { 

      @Override 
      public void onScrollStateChanged(RecyclerView recyclerView, int newState) { 
       //super.onScrollStateChanged(recyclerView, newState); 
       try { 
        int firstPos = mLinearLayoutManager.findFirstCompletelyVisibleItemPosition(); 
        if (refreshLayout != null) { 
         if (firstPos > 0) { 
          refreshLayout.setEnabled(false); 
         } else { 
          activity.refreshLayout.setEnabled(true); 
          if (recyclerView1.getScrollState() == 1) 
           if (activity.refreshLayout.isRefreshing()) 
            recyclerView1.stopScroll(); 
         } 
        } 

       } catch (Exception e) { 

       } 
      } 
     }); 

, чтобы различать прокрутку recyclerView и прокручивать макет обновления. Но я добавил заголовок для этого recyclerView, используя это [Is there an addHeaderView equivalent for RecyclerView?. Теперь высота заголовка в recyclerview слишком велика, поэтому в небольших устройствах

int firstPos = mLinearLayoutManager.findFirstCompletelyVisibleItemPosition(); 

возвращается 0, когда только половина заголовки видна. И это позволяет swiperefreshlayout. Поэтому я не вижу весь заголовок в recyclerView. Может ли кто-нибудь помочь мне решить это.

Благодаря

+0

Попробуйте это [ссылка] (http://androhub.com/android-swiperefresh-layout/) надеюсь, что это помогает. –

+0

downvoter может сказать мне причину downvote? – ImGenie

ответ

0
LinearLayoutManager llm = new LinearLayoutManager(getActivity()); 
refreshLayout.setOnRefreshListener(new PullRefreshLayout.OnRefreshListener() { 
     @Override 
     public void onRefresh() { 
      refreshLayout.setRefreshing(true); 
      // start refresh 
      new Handler().postDelayed(new Runnable() { 
       @Override 
       public void run() { 
         refreshLayout.setRefreshing(false); 
         } 
      }, 5000); 
     } 
    }); 


    recList.addOnScrollListener(new RecyclerView.OnScrollListener() { 
     @Override 
     public void onScrollStateChanged(RecyclerView recyclerView, int newState) { 
      super.onScrollStateChanged(recyclerView, newState); 

     } 
     @Override 
     public void onScrolled(RecyclerView recyclerView, int dx, int dy) { 
       refreshLayout.setEnabled(llm.findFirstCompletelyVisibleItemPosition() == 0); 
     } 
    }); 
+3

Что делает этот код? Не просто скопируйте код вставки, добавьте небольшое объяснение. –

Смежные вопросы