2016-08-12 2 views
0

Я пытаюсь добавить обновление прокрутки программно, но это не сработает. Никаких действий по восстановлению. Что-то здесь не так?SwipeRefresh Programmatically

ListView listView = (ListView) findViewById(R.id.listView); 
     List<String> values = new ArrayList<>(); 
     values.add("Hello"); 
     values.add("hi"); 
     values.add("Hello"); 
     values.add("hi"); 
     values.add("Hello"); 
     values.add("hi"); 
     values.add("Hello"); 
     values.add("hi"); 
     values.add("Hello"); 
     values.add("hi"); 
     values.add("Hello"); 
     values.add("hi"); 
     ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, values); 
     listView.setAdapter(adapter); 

     SwipeRefreshLayout swipeRefreshLayout = new SwipeRefreshLayout(this); 
     SwipeRefreshLayout.LayoutParams swipeRefreshLayoutParams = new SwipeRefreshLayout.LayoutParams(SwipeRefreshLayout.LayoutParams.MATCH_PARENT, SwipeRefreshLayout.LayoutParams.WRAP_CONTENT); 
     swipeRefreshLayout.setLayoutParams(swipeRefreshLayoutParams); 
     swipeRefreshLayout.setBackgroundColor(Color.RED); 
     swipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() { 
      @Override 
      public void onRefresh() { 
      Log.d(TAG, "Pulled"); 
      } 

     }); 
     ViewGroup r = (ViewGroup) listView.getParent(); 
     r.addView(swipeRefreshLayout); 
+0

Попробуйте поместить 'Toast' внутрь' onRefresh() 'это срабатывает, когда вы вытаскиваете? –

+0

Нет, это не так, у меня есть запись в журнале –

+0

Вы добавили 'SwipeRefreshLayout' в свой' xml'? –

ответ

3

Текущая иерархия взглядов:

ParentLayout -> ListView.

Но то, что мы хотим:

ParentLayout -> SwipeToRefresh -> ListView.

  • Добавить swipeLayout в родительский.
  • Удалить списокView из родителя.
  • Добавить listView в SwipeLayout.

Это потому, что у вида не может быть 2 родителя.

Следовательно,

final SwipeRefreshLayout swipeLayout = new SwipeRefreshLayout(context); 
    ((ViewGroup) listView.getParent()).addView(swipeLayout); 
    ((ViewGroup) listView.getParent()).removeView(listView); 
    swipeLayout.addView(listView); 

Обязательно приложите onRefresh слушателя к раскладке swipeRefresh.

+0

ok nice .... shruti ... –

Смежные вопросы