2

I am using Pull to Refresh tool on Scroll View with help of this library

https://github.com/chrisbanes/Android-PullToRefresh

It is working very fine rather than scrollTo(int,int); method in My below code I am using this method at last after adding all the items in list.

code is here.

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);

}

}

I defined PullToRefreshScrollView in XML like this

 <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>

I am getting result like this

enter image description here

there are 15 items in my list so it should not show white space at bottom of list.

Thanks a lot

Jignesh Ansodariya
  • 12,583
  • 24
  • 81
  • 113

1 Answers1

1

Please add this line in PullToRefreshScrollView.java under this code

final class InternalScrollViewSDK9 extends ScrollView{

@Override
      public void scrollTo(int x, int y) {
          // TODO Auto-generated method stub
          super.scrollTo(x, y);
      }

}

enter code here. It works for me.

DeRagan
  • 22,827
  • 6
  • 41
  • 50