アダプタを使用してアセット ファイルからデータをレンダリングする ListView を使用しています。リストが自動スクロールすると、 ListView の一番下の子が表示されません。しかし、画面に触れると、目に見えない子供が見えるようになります。自動スクロールモードで表示したい。ここにコードがあります
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
list = (ListView) findViewById(R.id.list);
loadUrduFileInList();
adapter = new LessonListAdapter(this, R.layout.lesson_list_item, urduDataList);
list.setAdapter(adapter);
list.setOnScrollListener(this);
verticalScrollMax = getListViewHeight(list);
verticalScrollMax = verticalScrollMax - 921;
ViewTreeObserver vto = list.getViewTreeObserver();
vto.addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener()
{
@Override
public void onGlobalLayout()
{
list.getViewTreeObserver().removeGlobalOnLayoutListener(this);
verticalScrollMax = getListViewHeight(list);
verticalScrollMax = verticalScrollMax - 921;
startAutoScrolling();
}
});
}
public void startAutoScrolling()
{
if (scrollTimer == null)
{
scrollTimer = new Timer();
final Runnable Timer_Tick = new Runnable()
{
public void run()
{
moveScrollView();
}
};
if (scrollerSchedule != null)
{
scrollerSchedule.cancel();
scrollerSchedule = null;
}
scrollerSchedule = new TimerTask()
{
@Override
public void run()
{
runOnUiThread(Timer_Tick);
}
};
scrollTimer.schedule(scrollerSchedule, 20, 20);
}
}
public void moveScrollView()
{
scrollPos = (int) (list.getScrollY() + 1.0);
if (scrollPos >= verticalScrollMax)
{
scrollPos = 0;
}
list.scrollTo(0, scrollPos);
}