我在这个库的帮助下在 Scroll View 上使用 Pull to Refresh 工具
https://github.com/chrisbanes/Android-PullToRefresh
它工作得很好,而不是scrollTo(int,int);
我下面的代码中的方法我在添加列表中的所有项目后最后使用了这个方法。
代码在这里。
public class MainActivity extends Activity {
PullToRefreshScrollView mPullRefreshScrollView;
LinearLayout listHolder;
ArrayList<String> list = new ArrayList<String>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
listHolder = (LinearLayout) findViewById(R.id.lay);
// initial values in List
for(int i =0;i<15;i++){
list.add("InitialValue");
}
mPullRefreshScrollView = (PullToRefreshScrollView) findViewById(R.id.pull_refresh_scrollview);
mPullRefreshScrollView
.setOnRefreshListener(new OnRefreshListener<ScrollView>() {
@Override
public void onRefresh(
PullToRefreshBase<ScrollView> refreshView) {
new GetDataTask().execute();
}
});
addJournal_Entry_page();
}
private class GetDataTask extends AsyncTask<Void, Void, String[]> {
@Override
protected String[] doInBackground(Void... params) {
try {
Thread.sleep(2000);
for(int i =0;i<4;i++){
list.add("InitialValue");
}
} catch (InterruptedException e) {
}
return null;
}
@Override
protected void onPostExecute(String[] result) {
// Do some stuff here
// Call onRefreshComplete when the list has been refreshed.
mPullRefreshScrollView.onRefreshComplete();
addJournal_Entry_page();
super.onPostExecute(result);
}
}
private void addJournal_Entry_page() {
View v;
listHolder.removeAllViews();
for (int i = 0; i < list.size(); i++) {
v = this.getLayoutInflater().inflate(R.layout.list_row, null);
TextView ind = (TextView)v.findViewById(R.id.index);
TextView name = (TextView)v.findViewById(R.id.name);
ind.setText(""+i);
name.setText(list.get(i));
listHolder.addView(v);
}
Resources r = getResources();
float px = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP,
100, r.getDisplayMetrics());
//problem is Here
mPullRefreshScrollView.scrollTo(0,(int)px);
}
}
我PullToRefreshScrollView
像这样在XML中定义
<com.handmark.pulltorefresh.library.PullToRefreshScrollView
xmlns:ptr="http://schemas.android.com/apk/res-auto"
android:id="@+id/pull_refresh_scrollview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
ptr:ptrAnimationStyle="flip"
ptr:ptrMode="pullFromStart" >
<LinearLayout
android:id="@+id/lay"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
</LinearLayout>
</com.handmark.pulltorefresh.library.PullToRefreshScrollView>
我得到这样的结果
我的列表中有 15 个项目,因此它不应在列表底部显示空白。
非常感谢