【发布时间】:2014-08-13 04:26:19
【问题描述】:
我在这个库的帮助下在滚动视图上使用拉动刷新工具
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);
}
}
我像这样在 XML 中定义了PullToRefreshScrollView
<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 个项目,因此它不应在列表底部显示空白。
非常感谢
【问题讨论】:
-
祝你好运,我遇到了同样的问题
标签: android autoscroll pull-to-refresh