2016-08-12 7 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

'onRefresh()'の中に 'Toast'を入れてみます。プルダウンすると起動しますか? –

+0

いいえ、Log文がありません –

+0

'SwipeRefreshLayout'を' xml'に追加しましたか? –

答えて

3

ビューの現在の階層は次のとおりです。

ParentLayout - > ListViewコントロール。

しかし、私たちがしたいです:

ParentLayout - > SwipeToRefresh - > ListViewコントロール。

  • swipeLayoutを親に追加します。
  • 親からlistViewを削除します。
  • リストビューをSwipeLayoutに追加します。

これは、ビューに2つの親を持つことができないためです。したがって

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

がswipeRefreshレイアウトにonRefreshリスナーを添付してください。

+0

大丈夫です.... shruti ... –

関連する問題