package de.stephanlindauer.criticalmaps.fragments; import android.os.Bundle; import android.support.design.widget.FloatingActionButton; import android.support.v4.app.Fragment; import android.support.v4.widget.SwipeRefreshLayout; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.Button; import android.widget.LinearLayout; import android.widget.ListView; import android.widget.ProgressBar; import java.util.ArrayList; import butterknife.Bind; import butterknife.ButterKnife; import butterknife.OnClick; import de.stephanlindauer.criticalmaps.App; import de.stephanlindauer.criticalmaps.R; import de.stephanlindauer.criticalmaps.adapter.TweetAdapter; import de.stephanlindauer.criticalmaps.handler.PostTweetHandler; import de.stephanlindauer.criticalmaps.handler.TwitterGetHandler; import de.stephanlindauer.criticalmaps.model.TwitterModel; import de.stephanlindauer.criticalmaps.vo.twitter.Tweet; public class TwitterFragment extends Fragment { //dependencies private TwitterModel twitterModel = App.components().twitterModel(); //view @Bind(R.id.twitter_error) LinearLayout errorMessage; @Bind(R.id.twitter_error_button) Button errorButton; @Bind(R.id.progressSpinner) ProgressBar loadingSpinner; @Bind(R.id.tweet_list) ListView tweetListView; @Bind(R.id.swipe_container) SwipeRefreshLayout swipeLayout; //adapter private TweetAdapter tweetAdapter; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { super.onCreateView(inflater, container, savedInstanceState); View view = inflater.inflate(R.layout.fragment_twitter, container, false); ButterKnife.bind(this, view); return view; } @Override public void onActivityCreated(final Bundle savedState) { super.onActivityCreated(savedState); tweetAdapter = new TweetAdapter(getActivity(), R.layout.view_tweet, new ArrayList<Tweet>()); tweetListView.setAdapter(tweetAdapter); swipeLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() { @Override public void onRefresh() { new TwitterGetHandler(TwitterFragment.this).execute(); } }); swipeLayout.setColorSchemeResources( R.color.twitter_indicator_color_first, R.color.twitter_indicator_color_second); errorButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { new TwitterGetHandler(TwitterFragment.this).execute(); loadingSpinner.setVisibility(View.VISIBLE); errorMessage.setVisibility(View.GONE); } }); new TwitterGetHandler(this).execute(); } @Override public void onDestroyView() { super.onDestroyView(); ButterKnife.unbind(this); } public void displayNewData() { swipeLayout.setRefreshing(false); errorMessage.setVisibility(View.GONE); loadingSpinner.setVisibility(View.GONE); swipeLayout.setVisibility(View.VISIBLE); tweetAdapter.clear(); tweetAdapter.addAll(twitterModel.getTweets()); tweetAdapter.notifyDataSetChanged(); } public void showErrorMessage() { swipeLayout.setVisibility(View.GONE); loadingSpinner.setVisibility(View.GONE); errorMessage.setVisibility(View.VISIBLE); } @OnClick(R.id.twitter_new_tweet_button) void handleNewTweetClicked(View view) { new PostTweetHandler(getActivity()).execute(); } }