2016-11-15 9 views
0

フラグメント内にListViewがあり、リストをREST APIのデータで埋めたいとします。フラグメント内のListViewを正しく設定する

REST要求には1〜3秒かかります。 これをバックグラウンドで実行したいと考えています。

私はこの機能をデバッグする場合は、すべてが実行され

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
    // Inflate the layout for this fragment 
    final View view = inflater.inflate(R.layout.fragment_watchlist, container, false); 
    view.postDelayed(new Runnable() { 
     @Override 
     public void run() { 
      //Execute Request in Thread 
      // adapter = .... 
      recyclerView.setAdapter(adapter); 
      recyclerView.setLayoutManager(new LinearLayoutManager(getContext())); 
     } 
    }, 1000); 

    return view; 

でそれを試してみました。

しかし、リストは描画されません。

のみ:アプリのメインバーの検索バーをクリックすると、それから私はリストを見ることができます。

2日前すべて正常に機能しました。しかし、私は間違いがどこにあるのか知りません。私はあなたが(成功を確認してください)あなたは、アダプタの使用をリフレッシュしたい.IFウェブAPIレスポンス方式であなたのREST APIのoncreateview()フラグメントのとセットアダプタに呼び出す示唆

@SuppressWarnings("StatementWithEmptyBody") 
@Override 
public boolean onNavigationItemSelected(MenuItem item) { 
    Fragment fragment = null; 
    String title = getString(R.string.app_name); 

    int id = item.getItemId(); 

    if (id == R.id.nav_news) { 
     fragment = new NewsFragment(); 
    } else if (id == R.id.nav_charts) { 
     fragment = new ChartFragment(); 
    } else if (id == R.id.nav_favorites) { 
     fragment = new FavoriteFragment(); 
    } else if (id == R.id.nav_profile) { 
     fragment = new ProfileFragment(); 
    } else if (id == R.id.nav_settings) { 
     throw new NotImplementedException("Fragment not Implemented"); 
    } 

    android.support.v4.app.FragmentTransaction fragmentTransaction = 
      getSupportFragmentManager().beginTransaction(); 
    fragmentTransaction.replace(R.id.fragment_container, fragment); 
    fragmentTransaction.commit(); 

    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
    drawer.closeDrawer(GravityCompat.START); 

    return true; 
} 
+0

また、私はsasikumarに同意し、小さな方法にタスクを分割します。何かのように 1. getData() - このようなメソッドを作成し、AsyncTask、IntentService、またはスレッドを使用してバックグラウンドでデータを取得します。 2. displayData() - データを取得し、それを解析してjavaオブジェクトに変換したら、javaオブジェクトを使用してurリストビューを設定します。 –

+0

しかし、フラグメントの 'View'オブジェクトを取得するには、onCreateView()関数でdisplayData()関数を呼び出す必要があります。 displayData()メソッドで 'getView()'しようとすると、ビューはnullになります – Phil795

答えて

0

:ここ

は私のナビゲーション機能でありますフラグメント内のonResume()メソッド。

+0

もっと説明できますか? REST API呼び出しを 'onCreateView'で行い、アダプタが' onResume'で割り当てることを意味しましたか? – Phil795

+0

あなたのwebApiの応答時にアダプタを設定します – sasikumar

+0

しかし、どのようにしてonCreateView関数の外でビューを取得できますか? – Phil795

関連する問題