Created
September 16, 2017 19:35
-
-
Save gavilanch/e582db9276a9cfdc97d9b469cf175056 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
gist tabs | |
// newsListActivity.cs | |
[Activity(Label = "NotiXamarin", MainLauncher = true, LaunchMode = Android.Content.PM.LaunchMode.SingleTop)] | |
public class NewsListActivity : Activity | |
{ | |
protected override void OnCreate(Bundle savedInstanceState) | |
{ | |
base.OnCreate(savedInstanceState); | |
// Create your application here | |
SetContentView(Resource.Layout.NewsList); | |
ActionBar.NavigationMode = ActionBarNavigationMode.Tabs; | |
AddTab("All news", new AllNewsListFragment()); | |
AddTab("Saved news", new SavedNewsListFragment()); | |
} | |
private void AddTab(string tabTitle, Fragment fragment) | |
{ | |
var tab = ActionBar.NewTab(); | |
tab.SetText(tabTitle); | |
tab.TabSelected += delegate (object sender, ActionBar.TabEventArgs e) | |
{ | |
var previousFragment = FragmentManager.FindFragmentById(Resource.Id.newsListFragmentContainer); | |
if (previousFragment != null) | |
{ | |
e.FragmentTransaction.Remove(previousFragment); | |
} | |
e.FragmentTransaction.Add(Resource.Id.newsListFragmentContainer, fragment); | |
}; | |
tab.TabUnselected += delegate (object sender, ActionBar.TabEventArgs e) | |
{ | |
e.FragmentTransaction.Remove(fragment); | |
}; | |
ActionBar.AddTab(tab); | |
} | |
// BaseNewsListFragment | |
public class BaseNewsListFragment: Fragment | |
{ | |
protected ListView _newsListView; | |
protected List<News> _news; | |
public BaseNewsListFragment() | |
{ | |
_news = new List<News>(); | |
} | |
protected void SetupFragment() | |
{ | |
SetupViews(); | |
SetupEvents(); | |
_newsListView.Adapter = new NewsListAdapter(Activity, _news); | |
} | |
protected void SetupViews() | |
{ | |
_newsListView = View.FindViewById<ListView>(Resource.Id.newsListView); | |
} | |
protected void SetupEvents() | |
{ | |
_newsListView.ItemClick += NewsListView_ItemClick; | |
} | |
private void NewsListView_ItemClick(object sender, AdapterView.ItemClickEventArgs e) | |
{ | |
var intent = new Intent(Activity, typeof(MainActivity)); | |
var id = (int)e.Id; | |
intent.PutExtra(MainActivity.KEY_ID, id); | |
StartActivity(intent); | |
} | |
public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) | |
{ | |
return inflater.Inflate(Resource.Layout.NewsListFragment, container, false); | |
} | |
} | |
// AllNewsListFragment | |
public class AllNewsListFragment: BaseNewsListFragment | |
{ | |
private NewsService _newsService; | |
public AllNewsListFragment() | |
{ | |
_newsService = new NewsService(); | |
} | |
public override void OnActivityCreated(Bundle savedInstanceState) | |
{ | |
base.OnActivityCreated(savedInstanceState); | |
if (!_news.Any()) | |
{ | |
_news = _newsService.GetNews(); | |
} | |
SetupFragment(); | |
} | |
} | |
// SavedNewsListFragment | |
public class SavedNewsListFragment : BaseNewsListFragment | |
{ | |
private NewsLocalService _newsLocalService; | |
public SavedNewsListFragment() | |
{ | |
_newsLocalService = new NewsLocalService(); | |
} | |
public override void OnActivityCreated(Bundle savedInstanceState) | |
{ | |
base.OnActivityCreated(savedInstanceState); | |
_news = _newsLocalService.GetAllSavedForReadLater(); | |
SetupFragment(); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment