Program: 78176
Project: 78176
Buggy source:
public void sortArrayAndPutInList(JSONArray array,final ListView view){
  try {
    int size=array.length();
    ArrayList<String> name=new ArrayList<String>();
    ArrayList<GoogleMaterial.Icon> icon=new ArrayList<GoogleMaterial.Icon>();
    for (int i=0; i < size; i++) {
      JSONObject o=array.getJSONObject(i);
      name.add(o.get("String_Node_Str").toString() + "String_Node_Str" + o.get("String_Node_Str").toString()+ "String_Node_Str"+ o.get("String_Node_Str")+ "String_Node_Str"+ o.get("String_Node_Str")+ "String_Node_Str"+ o.get("String_Node_Str"));
      if (o.get("String_Node_Str").toString().equals("String_Node_Str")) {
        icon.add(GoogleMaterial.Icon.gmd_long_arrow_down);
      }
 else {
        icon.add(GoogleMaterial.Icon.gmd_long_arrow_up);
      }
    }
    System.out.println(size + "String_Node_Str" + name.size());
    List<String> list=new ArrayList<String>();
    final ArrayAdapter emptyAdapter=new ArrayAdapter<String>(HomeView.this,android.R.layout.simple_list_item_1,list.toArray(new String[0]));
    final CustomList adapter=new CustomList(HomeView.this,name,icon);
    Handler h=new Handler(instance.getMainLooper());
    h.post(new Runnable(){
      @Override public void run(){
        final int y=view.getScrollY();
        view.clearChoices();
        view.clearAnimation();
        for (int index=0; index < view.getChildCount(); ++index) {
          View child=view.getChildAt(index);
          child.setVisibility(GONE);
        }
        view.setAdapter(emptyAdapter);
        view.setAdapter(adapter);
        view.post(new Runnable(){
          @Override public void run(){
            for (int index=0; index < view.getChildCount(); ++index) {
              View child=view.getChildAt(index);
              Animation animation=new TranslateAnimation(500,0,0,0);
              animation.setDuration(1000);
              animation.setStartOffset(index * 100);
              child.startAnimation(animation);
              view.setScrollY(y);
            }
            view.setScrollY(y);
          }
        }
);
      }
    }
);
  }
 catch (  Exception e) {
    e.printStackTrace();
  }
}

Fixed version (ground truth):
public void sortArrayAndPutInList(JSONArray array,final ListView view){
  try {
    final int y=view.getScrollY();
    final float yz=ViewHelper.getScrollY(view);
    int size=array.length();
    ArrayList<String> name=new ArrayList<String>();
    ArrayList<GoogleMaterial.Icon> icon=new ArrayList<GoogleMaterial.Icon>();
    for (int i=0; i < size; i++) {
      JSONObject o=array.getJSONObject(i);
      name.add(o.get("String_Node_Str").toString() + "String_Node_Str" + o.get("String_Node_Str").toString()+ "String_Node_Str"+ o.get("String_Node_Str")+ "String_Node_Str"+ o.get("String_Node_Str")+ "String_Node_Str"+ o.get("String_Node_Str"));
      if (o.get("String_Node_Str").toString().equals("String_Node_Str")) {
        icon.add(GoogleMaterial.Icon.gmd_long_arrow_down);
      }
 else {
        icon.add(GoogleMaterial.Icon.gmd_long_arrow_up);
      }
    }
    System.out.println(size + "String_Node_Str" + name.size());
    List<String> list=new ArrayList<String>();
    final ArrayAdapter emptyAdapter=new ArrayAdapter<String>(HomeView.this,android.R.layout.simple_list_item_1,list.toArray(new String[0]));
    final CustomList adapter=new CustomList(HomeView.this,name,icon);
    Handler h=new Handler(instance.getMainLooper());
    h.post(new Runnable(){
      @Override public void run(){
        view.clearChoices();
        view.clearAnimation();
        for (int index=0; index < view.getChildCount(); ++index) {
          View child=view.getChildAt(index);
          child.setVisibility(GONE);
        }
        view.setAdapter(emptyAdapter);
        view.setAdapter(adapter);
        view.setScrollY(y);
        view.post(new Runnable(){
          @Override public void run(){
            for (int index=0; index < view.getChildCount(); ++index) {
              View child=view.getChildAt(index);
              Animation animation=new TranslateAnimation(500,0,0,0);
              animation.setDuration(1000);
              animation.setStartOffset(index * 100);
              child.startAnimation(animation);
              view.setScrollY(y);
            }
            view.post(new Runnable(){
              @Override public void run(){
                System.out.println("String_Node_Str" + y + "String_Node_Str"+ yz);
                view.scrollTo(0,y);
              }
            }
);
          }
        }
);
        view.setScrollY(y);
      }
    }
);
  }
 catch (  Exception e) {
    e.printStackTrace();
  }
}