Android連載13-建立啓動活動類

根據碎片的生命週期,咱們知道onAttach()方法首先會被執行,所以在這裏作一些數據初始化的操做,好比調用getNews()方法獲取幾條模擬的新聞數據,以及完成NewsAdapter的建立,而後在onCreateView()方法中加載了news_title_frag佈局,並給新聞列表的ListView註冊了點擊實踐,接下來在onActivityCreated()方法中,咱們經過是否可以找到一個id爲news_content_layout的View只在雙頁模式中才會出現,在稍後的佈局中將會看到。而後在ListView的點擊事件中咱們能夠判斷出來,若是當前是單頁模式,就會啓動一個新的活動去顯示新聞內容,若是當前是雙頁模式,​就更新新聞內容碎片裏的數據。​java

 

package com.example.fragmentbestpractice;

​

import java.util.ArrayList;

import java.util.List;

​

import android.app.Activity;

import android.app.Fragment;

import android.os.Bundle;

import android.view.LayoutInflater;

import android.view.View;

import android.view.ViewGroup;

import android.widget.AdapterView;

import android.widget.AdapterView.OnItemClickListener;

import android.widget.ListView;

​

public class NewsTitleFragment extends Fragment implements OnItemClickListener{

  private ListView newsTitleListView;

 

  private List<News> newsList;

 

  private NewsAdapter adapter;

 

  private boolean isTwoPane;

 

  @Override

  public void onAttach(Activity activity) {

    super.onAttach(activity);

    newsList = getNews(); //初始化新聞數據

    adapter = new NewsAdapter(activity,R.layout.news_item,newsList);

  }

 

  @Override

  public View onCreateView(LayoutInflater inflater,ViewGroup container,Bundle savedInstanceState) {

    View view = inflater.inflate(R.layout.news_title_frag,container,false);

    newsTitleListView = (ListView) view.findViewById(R.id.news_title_list_view);

    newsTitleListView.setAdapter(adapter);

    newsTitleListView.setOnItemClickListener(this);

    return view;

  }

 

  @Override

  public void onActivityCreated(Bundle savedInstanceState) {

    super.onActivityCreated(savedInstanceState);

    if(getActivity().findViewById(R.id.news_content_layout)!= null) {

      isTwoPane = true;//能夠找到news_content_layout佈局時,爲雙頁模式     

    }else {

      isTwoPane = false;//找不到news_content_layout佈局時,爲單頁模式

    }

  }

 

  @Override

  public void onItemClick(AdapterView<?> parent,View view,int position,long id) {

    News news = newsList.get(position);

    if(isTwoPane) {

      //若是是雙頁模式,則刷新NewsContentFrayment中的內容

      NewsContentFragment newsContentFragment = (NewsContentFragment)getFragmentManager().findFragmentById(R.id.news_content_fragment);

      newsContentFragment.refresh(news.getTitle(),news.getTitle());

    }else {

      //若是是單頁模式,則直接啓動NewsContentActivity

      NewsContentActivity.actionStart(getActivity(), news.getTitle(), news.getContent()); 

    }

  }

  private List<News> getNews(){

    List<News> newsList = new ArrayList<News>();

    News news1 = new News();

    news1.setTitle("Succeed in College as a Learning Disabled Student");

    news1.setContent("Collaget freshmen will soon learn to live with roomate,adjust to a new social scene and survive less-than-stellar.");

    News news2 = new News();

    news2.setTitle("Google Android exec poached by China's Xiaomi");

    news2.setContent("China's Xiaomi has poached a key Google executive.");

    newsList.add(news2);

    return newsList;

   

   

  }

​

}

 

3、源碼:android

1.項目地址git

https://github.com/ruigege66/Android/tree/master/FragmentBestPractisegithub

2.CSDN:https://blog.csdn.net/weixin_44630050微信

3.博客園:https://www.cnblogs.com/ruigege0000/app

4.歡迎關注微信公衆號:傅里葉變換,我的公衆號,僅用於學習交流,後臺回覆」禮包「,獲取大數據學習資料less

 

相關文章
相關標籤/搜索