스크롤이 화면 하단에있을 때 ListView
업데이트를하려고 할 때 거의 작동했지만 약간의 문제가 남아 있습니다. 스크롤과 함께. 모두 여기의현재 위치가 listview의 lastitem 일 때 onScroll()이 실행되지 않습니다.
먼저 내가 응용 프로그램을 실행하면 if (currentFirstVisibleItem+currentVisibleItemCount == ttc)
조건이 참이 될 수 있도록
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
currentFirstVisibleItem = firstVisibleItem;
currentVisibleItemCount = visibleItemCount;
ttc = totalItemCount;
// check if the current item is last,
if (currentFirstVisibleItem+currentVisibleItemCount == ttc){
Log.e("ss","I am here");
if (totalTime == timeConsumed){
Log.e("Last","Last");
// add data on listView
// update listView
notifyDataSetChanged();
}
}
}
, 나는 바닥에 모든 방법을 스크롤 ListView
의 lastItem에 감지 내 코드이며,이 때문에 작업 Log.e
I am here
에 대한 메시지가 나타납니다.
이 시점에서 이미 화면 하단에있는 if (totalTime == timeConsumed)
블록이 5 초 후에 실행될 때까지 기다립니다. 최대한 빨리 블록이 실행되면 로그 메시지 Log.e("Last","Last");
이 나옵니다. 이미 ListView
의 맨 아래에 있기 때문에 문제가 있습니다. notifyDataSetChanged
은 이미 ListView
의 하단에 있으며 실행하기 위해 자동으로 실행되지 않습니다. notifyDataSetChanged()
화면을 터치해야만 실행됩니다.
Log.e("Last","Last");
이 실행될 때 notifyDataSetChanged()
이 실행되지 않는 이유는 무엇입니까? 이미 화면 맨 아래에 있더라도? notifyDataSetChanged()
을 실행하기 위해 화면을 터치해야하는 이유는 무엇입니까?
어디에서 기본 데이터를 변경하고 있습니까? – darnmason
데이터가 동일한 'if'블록에서 변경되었습니다. 즉, 'if (totalTime == timeConsumed)' – bhuvesh
데이터를 변경하고 변경 사항을 알리면 데이터를 변경하는 코드가 있어야합니다. .. – darnmason