2017-04-19 9 views
0

웹 사이트 앱을 만들고 첫 페이지에 피드를로드하려고하지만 문제는 스크롤이 끝이 없다는 것을 어떻게 막을 수 있습니까? 스크롤은 끝이 없으므로 멈추고 싶습니다.내 앱에서 끝없는 스크롤을 중지하는 방법은 무엇입니까?

public class FeedActivity extends AppCompatActivity 
{ 
    private SwipeRefreshLayout swipeLayout; 
    private RecyclerView listView; 

    private LinearLayoutManager layoutManager; 

    private FeedAdapter adapter; 
    private FeedService service; 
    private FeedModel model; 

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

     ActionBar actionBar = getSupportActionBar(); 
     if(null != actionBar) 
     { 
      actionBar.setDisplayShowHomeEnabled(true); 
      actionBar.setIcon(R.mipmap.ic_launcher); 
     } 

     model = new FeedModel(); 
     adapter = new FeedAdapter(model); 
     service = FeedService.create(model); 

     layoutManager = new LinearLayoutManager(this); 

     swipeLayout = (SwipeRefreshLayout) findViewById(R.id.swipeLayout); 

     listView = (RecyclerView) findViewById(R.id.listView); 
     listView.setLayoutManager(layoutManager); 
     listView.setAdapter(adapter); 
    } 

    @Override 
    protected void onSaveInstanceState(Bundle outState) 
    { 
     super.onSaveInstanceState(outState); 

    } 

    @Override 
    protected void onStart() 
    { 
     super.onStart(); 

     model.subscribe(onDataChangedListener); 
     adapter.setOnItemClickListener(onItemClickListener); 
     swipeLayout.setOnRefreshListener(onRefreshListener); 

     service.fetchOlder(); 
    } 

    @Override 
    protected void onStop() 
    { 
     super.onStop(); 

     model.unSubscribe(onDataChangedListener); 
     adapter.setOnItemClickListener(null); 
     swipeLayout.setOnRefreshListener(null); 

    } 

    FeedModel.OnDataChangedListener onDataChangedListener = new FeedModel.OnDataChangedListener() 
    { 
     @Override 
     public void onFetchedAndAddedToTop(int count) 
     { 
      swipeLayout.setRefreshing(false); 
      adapter.notifyDataSetChanged(); 
     } 

     @Override 
     public void onFetchedAndAddedToBottom(int count) 
     { 
      if(count == 0) 
      { 
       adapter.setFooterEnabled(false); 
      } 

      adapter.notifyDataSetChanged(); 
     } 
    }; 

    SwipeRefreshLayout.OnRefreshListener onRefreshListener = new SwipeRefreshLayout.OnRefreshListener() 
    { 
     @Override 
     public void onRefresh() 
     { 
      service.fetchNewer(); 
     } 
    }; 


    FeedAdapter.OnItemClickListener onItemClickListener = new FeedAdapter.OnItemClickListener() 
    { 
     @Override 
     public void onItemClick(View view) 
     { 
      int position = listView.getChildAdapterPosition(view); 
      FeedItem item = model.get(position); 

      Intent intent = new Intent(getApplicationContext(), PostActivity.class); 
      intent.putExtra("id", item.getId()); 

      startActivity(intent); 

//   System.out.println("Click: "+item.getTitle()); 
     } 
    }; 
} 

답변

0

당신은 당신이 많은 항목은 당신이 다음 할 당신이 실제보다 적은 아이템을 얻을 때 새로 고침을 호출 중지 조건을 리프레시 모든 위해 새로 고침하는 방법을 알고 있다면 두 가지 방법

  1. 에서 스크롤을 중지 할 수 있습니다.

  2. 이전 새로 고침에서 데이터를 가져 오지 않을 때 간단히 목록 새로 고침을 중지 할 수 있습니다. 무한 스크롤을 중지하려면

희망이 도움이 ..

@Rajesh

0

는 조건을 적용합니다. 예를 들어 스크롤 할 때마다 20 개의 결과가 가져와 져서 목록에 추가됩니다. 그런 다음 조건을 적용 할 수 있습니다.

if(lastFetchedItemCount!=0&&lastFetchedItemCount%20==0){ 
//enable scrolling 
} 
else{ 
//disable scrolling 
}