このライブラリの助けを借りて、スクロールビューでプルツーリフレッシュツールを使用しています
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 個の項目があるので、リストの下部に空白は表示されません。
どうもありがとう