나는 몇 가지 물건을 갖고 싶다. ListView
에 게으른 로딩을하고 싶습니다. 내 ListView
은 &의 데이터가 10,000 개를 초과하여 TextView
에만 있습니다. 그래서 내가 목록 활동을 시작할 때 모든 데이터를 처음으로로드 할 수는 없습니다. 그것은 효율적이지 않아 목록에서 처음 20 또는 30 개의 항목을로드 할 수 있습니다. 더 이상 행을 스크롤 할 때 ListView
행이로드됩니다. 그래서 내가 마지막 색인에 ListView
의 마지막 색인에 도달하면, 나는 새로운 데이터가 마지막으로 + 1 색인과 함께로드 될 때 새로운 데이터가로드된다는 점에 유의하여 progressbar를 놓을 것입니다. 내가 어떻게 할 수 있니?안드로이드리스트 뷰 지연로드
답변
무한 어댑터 구현을 사용하여이 작업을 수행 할 수 있습니다. 이것은 당신이 원하는 것을 정확하게합니다. 스크롤 당 새로 고칠 행 수를 제한 할 수도 있습니다. 여기에 대한 링크입니다.,
Android: Implementing progressbar and "loading..." for Endless List like Android Market
https://github.com/commonsguy/cwac-endless
를 사용하려면
, 당신은 endlessness을 처리하는 방법에 대한 세부 사항을 제공하기 위해 EndlessAdapter을 확장합니다. 특히, 실제 어댑터의 행과 독립적으로 행 뷰를 제공 할 수 있어야합니다. 행 뷰는 다른 방법으로 실제 데이터를 메인 어댑터에로드하는 동안 자리 표시 자 역할을합니다. 그런 다음 약간의 도움을 받아 새로운 데이터로 자연스럽게 전환됩니다.고마워, 이걸 시험해 보게. – Jai
링크가 깨졌습니다! :( –
는 전화 기능에 넣어 // :
@Override
public View onCreateView(android.view.LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
ScrollListener scrollListener = new ScrollListener();
listView.setOnScrollListener(scrollListener);
}
및 내부 클래스 :
class ScrollListener implements OnScrollListener
{
@Override
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount)
{
int size = searchedPeople.size();
if(isScrolled && totalItemCount != 0 && size < totalPeoples)
{
if(firstVisibleItem + visibleItemCount >= totalItemCount)
{
yourfunction(size, size + limit); // call service in your functioin
isScrolled = false;
}
}
}
@Override
public void onScrollStateChanged(AbsListView view, int scrollState)
{
}
}
귀하의 목록을 스크롤합니다 빨리 : -
- 사용 조건의 수를 줄이 어댑터의
getView
- 는 로그
- 추가 스크롤 기능 얻을 가비지 컬렉션 경고 수 (스크롤마다 갱신되는 행의 수를 제한)
리스트 뷰에 onScrollListener 추가를 줄입니다. 사용자가 스크롤하면 ListView의 끝이 가까워 졌는지 확인합니다. 그렇다면 더 많은 데이터를 가져옵니다. 예를 들어 :
public abstract class LazyLoader implements AbsListView.OnScrollListener {
private static final int DEFAULT_THRESHOLD = 10 ;
private boolean loading = true ;
private int previousTotal = 0 ;
private int threshold = DEFAULT_THRESHOLD ;
public LazyLoader() {}
public LazyLoader(int threshold) {
this.threshold = threshold;
}
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
}
@Override
public void onScroll(AbsListView view, int firstVisibleItem,
int visibleItemCount, int totalItemCount) {
if(loading) {
if(totalItemCount > previousTotal) {
// the loading has finished
loading = false ;
previousTotal = totalItemCount ;
}
}
// check if the List needs more data
if(!loading && ((firstVisibleItem + visibleItemCount) >= (totalItemCount - threshold))) {
loading = true ;
// List needs more data. Go fetch !!
loadMore(view, firstVisibleItem,
visibleItemCount, totalItemCount);
}
}
// Called when the user is nearing the end of the ListView
// and the ListView is ready to add more items.
public abstract void loadMore(AbsListView view, int firstVisibleItem,
int visibleItemCount, int totalItemCount);
}
활동 :
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main_layout);
ListView listView = (ListView) findViewById(R.id.listView);
listView.setOnScrollListener(new LazyLoader() {
@Override
public void loadMore(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
// Fetch your data here !!!
}
});
}
}
당신은 완벽하게 구현 at this link
- 1. 안드로이드리스트 뷰
- 2. 안드로이드리스트 뷰
- 3. 안드로이드리스트 뷰 ArrayAdapter 예제
- 4. 안드로이드리스트 뷰 센터 선택
- 5. 안드로이드리스트 뷰 (ArrayList 포함)
- 6. 안드로이드리스트 뷰 - 다양한 색상
- 7. 안드로이드리스트 뷰 섹션 헤더
- 8. 안드로이드리스트 뷰 행 애니메이션
- 9. 안드로이드리스트 뷰 도움말
- 10. 안드로이드리스트 뷰 데이터베이스보다
- 11. 안드로이드리스트 뷰 포커스
- 12. 안드로이드리스트 뷰 텍스트 정렬
- 13. 안드로이드리스트 뷰 : mouseover 액션
- 14. 헤더가있는 안드로이드리스트 뷰
- 15. 안드로이드리스트 뷰 아이템 배경색
- 16. 안드로이드리스트 뷰 전체리스트 선택
- 17. 안드로이드리스트 뷰 이미지 크기
- 18. 안드로이드리스트 뷰 레이아웃 inflater
- 19. 테이블 레이아웃에 안드로이드리스트 뷰
- 20. 안드로이드리스트 뷰 텍스트 색상
- 21. Google지도를 사용하는 안드로이드리스트 뷰
- 22. 안드로이드리스트 뷰 요소 높이 변경
- 23. 안드로이드리스트 뷰 페이드 드 에지
- 24. 안드로이드리스트 뷰 - 행의 HTML formating
- 25. 안드로이드리스트 뷰 onclick으로 TabActivitycc를 시작하십시오
- 26. 안드로이드리스트 뷰 및 텍스트 워처
- 27. 안드로이드리스트 뷰 - pointToPosition가 invalid_position을 반환했습니다.
- 28. 안드로이드리스트 뷰 행 패딩/여백
- 29. 안드로이드리스트 뷰 스크롤 속도가 느려짐
- 30. 안드로이드리스트 뷰 배경이 그려지지 않았다.
당신이 시도 것을 보여줄 수 찾을 수 있습니까? – gideon
예 여기에 이미지를 예제로 추가했습니다.이 하나를 선택하십시오 – Jai
피카소는 어떨까요? 이것이 당신의 필요를 충족 시키는가? http://square.github.io/picasso/ – phi