2016-01-13 71 views
-1

叫我要添加刷卡刷新我不能找到如何从ScrollableTabActivity.java如何实现刷卡刷新对JSON片段饲料从其他活动

OneFragment.java

public class OneFragment extends Fragment implements SwipeRefreshLayout.OnRefreshListener { 

    private ListView listView; 
    private FeedListAdapter listAdapter; 
    private SwipeRefreshLayout swipeRefreshLayout; 
    private FeedListAdapter adapter; 
    private int id = 0; 

    public OneFragment() { 
     // Required empty public constructor 
    } 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
     // Inflate the layout for this fragment 
     View view = inflater.inflate(R.layout.fragment_one, container, false); 
     listView = (ListView) view.findViewById(R.id.list); 
     listAdapter = new FeedListAdapter(getActivity(), ScrollableTabsActivity.feedItems); 
     swipeRefreshLayout = (SwipeRefreshLayout) view.findViewById(R.id.swipe_refresh_layout); 
     listView.setAdapter(listAdapter); 
     swipeRefreshLayout.setOnRefreshListener(this); 
     return view; 

    } 
上刷新调用

ScrollableTabsActivity.java

public class ScrollableTabsActivity extends AppCompatActivity { 

    private static final String TAG = ScrollableTabsActivity.class.getSimpleName(); 

    private Toolbar toolbar; 
    private TabLayout tabLayout; 
    private ViewPager viewPager; 
    public static List<FeedItem> feedItems =new ArrayList<>(); 
    public static List<FeedItem> feedItems1 =new ArrayList<>(); 
    public static List<FeedItem> feedItems2 =new ArrayList<>(); 
    public static List<FeedItem> feedItems3 =new ArrayList<>(); 
    public static List<FeedItem> feedItems4 =new ArrayList<>(); 
    private String URL_FEED = "http://www.goalert.in/feed/engineering.json"; 
    private String URL_FEED1 = "http://www.goalert.in/feed/medical.json"; 
    private String URL_FEED2 = "http://www.goalert.in/feed/bschool.json"; 
    private String URL_FEED3 = "http://www.goalert.in/feed/law.json"; 
    private String URL_FEED4 ="http://www.goalert.in/feed/GovernmentExams.json"; 

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

     toolbar = (Toolbar) findViewById(R.id.toolbar); 
     setSupportActionBar(toolbar); 
     getSupportActionBar().setDisplayHomeAsUpEnabled(true); 

     viewPager = (ViewPager) findViewById(R.id.viewpager); 
     setupViewPager(viewPager); 

     tabLayout = (TabLayout) findViewById(R.id.tabs); 
     tabLayout.setupWithViewPager(viewPager); 

     Cache cache = AppController.getInstance().getRequestQueue().getCache(); 
     Cache.Entry entry = cache.get(URL_FEED); 
     Cache cache1 = AppController.getInstance().getRequestQueue().getCache(); 
     Cache.Entry entry1 = cache1.get(URL_FEED1); 
     Cache cache2 = AppController.getInstance().getRequestQueue().getCache(); 
     Cache.Entry entry2 = cache2.get(URL_FEED2); 
     Cache cache3 = AppController.getInstance().getRequestQueue().getCache(); 
     Cache.Entry entry3 = cache3.get(URL_FEED3); 
     Cache cache4 = AppController.getInstance().getRequestQueue().getCache(); 
     Cache.Entry entry4 = cache4.get(URL_FEED4); 

     //if and else for Engineering Feeds 
     feedItems.clear(); 
     if (entry != null) { 
      // fetch the data from cache 
      try { 
       String data = new String(entry.data, "UTF-8"); 
       try { 
        parseJsonFeed(new JSONObject(data)); 
       } catch (JSONException e) { 
        e.printStackTrace(); 
       } 
      } catch (UnsupportedEncodingException e) { 
       e.printStackTrace(); 
      } 

     } else { 
      // making fresh volley request and getting json 
      JsonObjectRequest jsonReq = new JsonObjectRequest(Request.Method.GET, 
        URL_FEED, null, new Response.Listener<JSONObject>() { 

       @Override 
       public void onResponse(JSONObject response) { 
        VolleyLog.d(TAG, "Response: " + response.toString()); 
        if (response != null) { 
         parseJsonFeed(response); 
        } 
       } 
      }, new Response.ErrorListener() { 

       @Override 
       public void onErrorResponse(VolleyError error) { 
        VolleyLog.d(TAG, "Error: " + error.getMessage()); 
       } 
      }); 

      // Adding request to volley request queue 
      AppController.getInstance().addToRequestQueue(jsonReq); 
     } 


     //if and else for Medical feeds 

     feedItems1.clear(); 

     if (entry1 != null) { 
      // fetch the data from cache 
      try { 
       String data = new String(entry1.data, "UTF-8"); 
       try { 
        parseJsonFeed1(new JSONObject(data)); 
       } catch (JSONException e) { 
        e.printStackTrace(); 
       } 
      } catch (UnsupportedEncodingException e) { 
       e.printStackTrace(); 
      } 

     } else { 
      // making fresh volley request and getting json 
      JsonObjectRequest jsonReq = new JsonObjectRequest(Request.Method.GET, 
        URL_FEED1, null, new Response.Listener<JSONObject>() { 

       @Override 
       public void onResponse(JSONObject response) { 
        VolleyLog.d(TAG, "Response: " + response.toString()); 
        if (response != null) { 
         parseJsonFeed1(response); 
        } 
       } 
      }, new Response.ErrorListener() { 

       @Override 
       public void onErrorResponse(VolleyError error) { 
        VolleyLog.d(TAG, "Error: " + error.getMessage()); 
       } 
      }); 

      // Adding request to volley request queue 
      AppController.getInstance().addToRequestQueue(jsonReq); 
     } 

     //if and else for bschool feeds 
     feedItems2.clear(); 
     if (entry2 != null) { 
      // fetch the data from cache 
      try { 
       String data = new String(entry2.data, "UTF-8"); 
       try { 
        parseJsonFeed2(new JSONObject(data)); 
       } catch (JSONException e) { 
        e.printStackTrace(); 
       } 
      } catch (UnsupportedEncodingException e) { 
       e.printStackTrace(); 
      } 

     } else { 
      // making fresh volley request and getting json 
      JsonObjectRequest jsonReq = new JsonObjectRequest(Request.Method.GET, 
        URL_FEED2, null, new Response.Listener<JSONObject>() { 

       @Override 
       public void onResponse(JSONObject response) { 
        VolleyLog.d(TAG, "Response: " + response.toString()); 
        if (response != null) { 
         parseJsonFeed2(response); 
        } 
       } 
      }, new Response.ErrorListener() { 

       @Override 
       public void onErrorResponse(VolleyError error) { 
        VolleyLog.d(TAG, "Error: " + error.getMessage()); 
       } 
      }); 

      // Adding request to volley request queue 
      AppController.getInstance().addToRequestQueue(jsonReq); 
     } 
     feedItems3.clear(); 
     //if and else for law feeds 
     if (entry3 != null) { 
      // fetch the data from cache 
      try { 
       String data = new String(entry3.data, "UTF-8"); 
       try { 
        parseJsonFeed3(new JSONObject(data)); 
       } catch (JSONException e) { 
        e.printStackTrace(); 
       } 
      } catch (UnsupportedEncodingException e) { 
       e.printStackTrace(); 
      } 

     } else { 
      // making fresh volley request and getting json 
      JsonObjectRequest jsonReq = new JsonObjectRequest(Request.Method.GET, 
        URL_FEED3, null, new Response.Listener<JSONObject>() { 

       @Override 
       public void onResponse(JSONObject response) { 
        VolleyLog.d(TAG, "Response: " + response.toString()); 
        if (response != null) { 
         parseJsonFeed3(response); 
        } 
       } 
      }, new Response.ErrorListener() { 

       @Override 
       public void onErrorResponse(VolleyError error) { 
        VolleyLog.d(TAG, "Error: " + error.getMessage()); 
       } 
      }); 

      // Adding request to volley request queue 
      AppController.getInstance().addToRequestQueue(jsonReq); 
     } 
     feedItems4.clear(); 
     //if and else for Government Exams feeds 
     if (entry4 != null) { 
      // fetch the data from cache 
      try { 
       String data = new String(entry4.data, "UTF-8"); 
       try { 
        parseJsonFeed4(new JSONObject(data)); 
       } catch (JSONException e) { 
        e.printStackTrace(); 
       } 
      } catch (UnsupportedEncodingException e) { 
       e.printStackTrace(); 
      } 

     } else { 
      // making fresh volley request and getting json 
      JsonObjectRequest jsonReq = new JsonObjectRequest(Request.Method.GET, 
        URL_FEED4, null, new Response.Listener<JSONObject>() { 

       @Override 
       public void onResponse(JSONObject response) { 
        VolleyLog.d(TAG, "Response: " + response.toString()); 
        if (response != null) { 
         parseJsonFeed4(response); 
        } 
       } 
      }, new Response.ErrorListener() { 

       @Override 
       public void onErrorResponse(VolleyError error) { 
        VolleyLog.d(TAG, "Error: " + error.getMessage()); 
       } 
      }); 

      // Adding request to volley request queue 
      AppController.getInstance().addToRequestQueue(jsonReq); 
     } 

    } 


    private void parseJsonFeed(JSONObject response) { 
     try { 
      JSONArray feedArray = response.getJSONArray("feed"); 

      for (int i = 0; i < feedArray.length(); i++) { 
       JSONObject feedObj = (JSONObject) feedArray.get(i); 

       FeedItem item = new FeedItem(); 
       item.setId(feedObj.getInt("id")); 
       item.setName(feedObj.getString("name")); 

       // Image might be null sometimes 
       String image = feedObj.isNull("image") ? null : feedObj 
         .getString("image"); 
       item.setImge(image); 
       item.setStatus(feedObj.getString("status")); 
       item.setProfilePic(feedObj.getString("profilePic")); 
       item.setTimeStamp(feedObj.getString("timeStamp")); 

       // url might be null sometimes 
       String feedUrl = feedObj.isNull("url") ? null : feedObj 
         .getString("url"); 
       item.setUrl(feedUrl); 

       feedItems.add(item); 
      } 

      // notify data changes to list adapater 

     } catch (JSONException e) { 
      e.printStackTrace(); 
     } 
    } 


    private void parseJsonFeed1(JSONObject response) { 
     try { 
      JSONArray feedArray = response.getJSONArray("feed"); 

      for (int i = 0; i < feedArray.length(); i++) { 
       JSONObject feedObj = (JSONObject) feedArray.get(i); 

       FeedItem item = new FeedItem(); 
       item.setId(feedObj.getInt("id")); 
       item.setName(feedObj.getString("name")); 

       // Image might be null sometimes 
       String image = feedObj.isNull("image") ? null : feedObj 
         .getString("image"); 
       item.setImge(image); 
       item.setStatus(feedObj.getString("status")); 
       item.setProfilePic(feedObj.getString("profilePic")); 
       item.setTimeStamp(feedObj.getString("timeStamp")); 

       // url might be null sometimes 
       String feedUrl = feedObj.isNull("url") ? null : feedObj 
         .getString("url"); 
       item.setUrl(feedUrl); 

       feedItems1.add(item); 
      } 

      // notify data changes to list adapater 

     } catch (JSONException e) { 
      e.printStackTrace(); 
     } 
    } 

    private void parseJsonFeed2(JSONObject response) { 
     try { 
      JSONArray feedArray = response.getJSONArray("feed"); 

      for (int i = 0; i < feedArray.length(); i++) { 
       JSONObject feedObj = (JSONObject) feedArray.get(i); 

       FeedItem item = new FeedItem(); 
       item.setId(feedObj.getInt("id")); 
       item.setName(feedObj.getString("name")); 

       // Image might be null sometimes 
       String image = feedObj.isNull("image") ? null : feedObj 
         .getString("image"); 
       item.setImge(image); 
       item.setStatus(feedObj.getString("status")); 
       item.setProfilePic(feedObj.getString("profilePic")); 
       item.setTimeStamp(feedObj.getString("timeStamp")); 

       // url might be null sometimes 
       String feedUrl = feedObj.isNull("url") ? null : feedObj 
         .getString("url"); 
       item.setUrl(feedUrl); 

       feedItems2.add(item); 
      } 

      // notify data changes to list adapater 

     } catch (JSONException e) { 
      e.printStackTrace(); 
     } 
    } 

    private void parseJsonFeed3(JSONObject response) { 
     try { 
      JSONArray feedArray = response.getJSONArray("feed"); 

      for (int i = 0; i < feedArray.length(); i++) { 
       JSONObject feedObj = (JSONObject) feedArray.get(i); 

       FeedItem item = new FeedItem(); 
       item.setId(feedObj.getInt("id")); 
       item.setName(feedObj.getString("name")); 

       // Image might be null sometimes 
       String image = feedObj.isNull("image") ? null : feedObj 
         .getString("image"); 
       item.setImge(image); 
       item.setStatus(feedObj.getString("status")); 
       item.setProfilePic(feedObj.getString("profilePic")); 
       item.setTimeStamp(feedObj.getString("timeStamp")); 

       // url might be null sometimes 
       String feedUrl = feedObj.isNull("url") ? null : feedObj 
         .getString("url"); 
       item.setUrl(feedUrl); 

       feedItems3.add(item); 
      } 

      // notify data changes to list adapater 

     } catch (JSONException e) { 
      e.printStackTrace(); 
     } 
    } 

    private void parseJsonFeed4(JSONObject response) { 
     try { 
      JSONArray feedArray = response.getJSONArray("feed"); 

      for (int i = 0; i < feedArray.length(); i++) { 
       JSONObject feedObj = (JSONObject) feedArray.get(i); 

       FeedItem item = new FeedItem(); 
       item.setId(feedObj.getInt("id")); 
       item.setName(feedObj.getString("name")); 

       // Image might be null sometimes 
       String image = feedObj.isNull("image") ? null : feedObj 
         .getString("image"); 
       item.setImge(image); 
       item.setStatus(feedObj.getString("status")); 
       item.setProfilePic(feedObj.getString("profilePic")); 
       item.setTimeStamp(feedObj.getString("timeStamp")); 

       // url might be null sometimes 
       String feedUrl = feedObj.isNull("url") ? null : feedObj 
         .getString("url"); 
       item.setUrl(feedUrl); 

       feedItems4.add(item); 
      } 

      // notify data changes to list adapater 

     } catch (JSONException e) { 
      e.printStackTrace(); 
     } 
    } 




    private void setupViewPager(ViewPager viewPager) { 
     ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager()); 
     adapter.addFrag(new OneFragment(), "Engineering"); 
     adapter.addFrag(new TwoFragment(), "Medical"); 
     adapter.addFrag(new ThreeFragment(), "B-School"); 
     adapter.addFrag(new FourFragment(), "Law"); 
     adapter.addFrag(new FiveFragment(), "Government Services"); 
     viewPager.setAdapter(adapter); 
    } 

    class ViewPagerAdapter extends FragmentPagerAdapter { 
     private final List<Fragment> mFragmentList = new ArrayList<>(); 
     private final List<String> mFragmentTitleList = new ArrayList<>(); 

     public ViewPagerAdapter(FragmentManager manager) { 
      super(manager); 
     } 

     @Override 
     public Fragment getItem(int position) { 
      return mFragmentList.get(position); 
     } 
     @Override 
     public int getCount() { 
      return mFragmentList.size(); 
     } 

     public void addFrag(Fragment fragment, String title) { 
      mFragmentList.add(fragment); 
      mFragmentTitleList.add(title); 
     } 

     @Override 
     public CharSequence getPageTitle(int position) { 
      return mFragmentTitleList.get(position); 
     } 
    } 
    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.menu_logout, menu); 
     return true; 
    } 
    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     int id = item.getItemId(); 
     //noinspection SimplifiableIfStatement 
     if (id == R.id.profile_done) { 
      SharedPreferences preferences = getSharedPreferences("AndroidHiveLogin", 0); 
      preferences.edit().remove("isLoggedIn").commit(); 
      startActivity(new Intent(ScrollableTabsActivity.this, LoginActivity.class)); 
      finish(); 
      return true; 
     } 
     return super.onOptionsItemSelected(item); 
    } 
} 

回答

2

由于您的片段实施了SwipeRefreshLayout.OnRefreshListener,因此您可以简单地致电onRefresh()。如果你的意图是手动强制刷新。

实施例:

((SwipeRefreshLayout.OnRefreshListener) pagerAdapter.getItem(position)).onRefresh();