2015-09-21 50 views
1

如何獲取由排除請求填充的數據列表,因爲該片段正在獲取已在主活動中實例化的空列表。使用Volley並移動到片段的流行數組列表

主要活動

public class MainActivity extends AppCompatActivity { 

private Toolbar toolbar; 
private ViewPager pager; 
private ViewPageAdapter adapter; 
private SlidingTabLayout tabs; 
private int numTabs = 2; 
private ArrayList<HashMap<String,String>> list = new ArrayList<HashMap<String,String>>(); 

private ProgressDialog progressDialog; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    sendJsonRequest(); 

    toolbar = (Toolbar) findViewById(R.id.tool_bar); 
    setSupportActionBar(toolbar); 

    adapter = new ViewPageAdapter(getSupportFragmentManager(),titles,numTabs); 

    pager = (ViewPager) findViewById(R.id.pager); 
    pager.setAdapter(adapter); 

    tabs = (SlidingTabLayout) findViewById(R.id.tabs); 
    tabs.setDistributeEvenly(true); 

    tabs.setCustomTabColorizer(new SlidingTabLayout.TabColorizer() { 
     @Override 
     public int getIndicatorColor(int position) { 
      //return getResources().getColor(R.color.tabsScrollColor); 
      return ContextCompat.getColor(getApplicationContext(), R.color.cgred); 
     } 
    }); 

    tabs.setViewPager(pager); 
    //////////////////////////////////////// 



    // Toast.makeText(getApplicationContext(),getList().toString(),Toast.LENGTH_LONG).show(); 

} 

該方法使得用於所述web服務的數據的請求並填充方法陣列parseJson

public void sendJsonRequest() { 

    RequestQueue queue = Volley.newRequestQueue(MainActivity.this); 

    JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(Request.Method.GET, BCWATCH, new Response.Listener<JSONObject>() { 

     @Override 
     public void onResponse(JSONObject response) { 
      parseJson(response); // This method populates the list instantiated at the beginning of the main activity 
      progressDialog.dismiss(); 

     } 
    }, new Response.ErrorListener() { 
     @Override 
     public void onErrorResponse(VolleyError error) { 
      Toast.makeText(getApplicationContext(),"Error!",Toast.LENGTH_LONG).show(); 
      progressDialog.dismiss(); 

     } 
    }); 

    queue.add(jsonObjectRequest); 

    progressDialog = new ProgressDialog(this); 
    progressDialog.setMessage("Getting data..."); 
    progressDialog.show(); 

} 

片段

我的片段接收一個空的列表,我相信這是因爲異步ex請求的執行,但如何獲得片段中的完整列表?

public class Tab1 extends android.support.v4.app.Fragment { 

HashMap<String, String> obj; 
ArrayList<HashMap<String, String>> list; 

@Override 
public void onCreate(@Nullable Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    list = ((MainActivity) getActivity()).getList(); 

    if(list != null){ 
     //Toast.makeText(getContext(),"Not null",Toast.LENGTH_LONG).show(); 

     for (HashMap<String, String> entry : list) { 
      Set<String> keys = entry.keySet(); 
      for (String key : keys) { 
       String value = entry.get(key); 
       Toast.makeText(getContext(),"key:"+key+" value:"+value,Toast.LENGTH_LONG).show(); 
      } 
     } 
    } 
} 

回答

0

您可以使用片段的構造函數,並設置適配器有for example否則你應該在片段它的自我JSON請求填充數組列表。

+0

第二個鏈接與第一個鏈接相同 – renantins

相關問題