package shts.jp.android.nogifeed.fragments; import android.annotation.SuppressLint; import android.content.Context; import android.os.Bundle; import android.support.annotation.Nullable; import android.support.v4.app.Fragment; import android.support.v7.widget.Toolbar; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.ImageView; import android.widget.ListView; import android.widget.TextView; import java.util.ArrayList; import java.util.List; import shts.jp.android.nogifeed.R; import shts.jp.android.nogifeed.adapters.BindableAdapter; import shts.jp.android.nogifeed.utils.IntentUtils; import shts.jp.android.nogifeed.utils.PicassoHelper; public class AboutFragment extends Fragment { private static final String URL_ICON = "https://avatars1.githubusercontent.com/u/7928836?v=3&s=460"; private ListView listView; private void setupAboutListAdapter() { List<AboutItem> abouts = new ArrayList<>(); abouts.add(new AboutItem(getResources().getString(R.string.about_item_share), R.drawable.ic_social_share, new OnClickListener() { @Override public void onClick() { IntentUtils.recommendApp(getActivity()); } })); abouts.add(new AboutItem(getResources().getString(R.string.about_item_rate), R.drawable.ic_action_thumb_up, new OnClickListener() { @Override public void onClick() { IntentUtils.rateApp(getActivity()); } })); abouts.add(new AboutItem(getResources().getString(R.string.about_item_mention), R.drawable.ic_communication_messenger, new OnClickListener() { @Override public void onClick() { IntentUtils.inquiryApp(getActivity()); } })); listView.setAdapter(new AboutListAdapter(getActivity(), abouts)); } private void setupListHeader(LayoutInflater inflater, ListView listView) { @SuppressLint("InflateParams") View view = inflater.inflate(R.layout.about_header, null); ImageView developerIcon = (ImageView) view.findViewById(R.id.developer_icon); developerIcon.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { IntentUtils.showDeveloper(getActivity()); } }); PicassoHelper.loadAndCircleTransform(getActivity(), developerIcon, URL_ICON); listView.addHeaderView(view); } @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { @SuppressLint("InflateParams") View view = inflater.inflate(R.layout.fragment_about, null); final Toolbar toolbar = (Toolbar) view.findViewById(R.id.toolbar); toolbar.setTitle(R.string.nav_menu_about_app); toolbar.setNavigationIcon(R.drawable.ic_clear_white_18dp); toolbar.setNavigationOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { getActivity().finish(); } }); listView = (ListView) view.findViewById(R.id.about_list); listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) { ListView listView = (ListView) adapterView; AboutItem aboutItem = (AboutItem) listView.getItemAtPosition(i); if (aboutItem != null && aboutItem.listener != null) { aboutItem.listener.onClick(); } } }); setupListHeader(inflater, listView); setupAboutListAdapter(); return view; } class AboutItem { public final String title; final int iconRes; final OnClickListener listener; AboutItem(String title, int iconRes, OnClickListener listener) { this.title = title; this.iconRes = iconRes; this.listener = listener; } } public interface OnClickListener { void onClick(); } static class AboutListAdapter extends BindableAdapter<AboutItem> { class ViewHolder { TextView textView; ImageView imageView; ViewHolder(View view) { textView = (TextView) view.findViewById(R.id.title); imageView = (ImageView) view.findViewById(R.id.icon); } } AboutListAdapter(Context context, List<AboutItem> list) { super(context, list); } @Override public View newView(LayoutInflater inflater, int position, ViewGroup container) { @SuppressLint("InflateParams") View view = inflater.inflate(R.layout.list_item_about_action, null); final ViewHolder holder = new ViewHolder(view); view.setTag(holder); return view; } @Override public void bindView(AboutItem item, int position, View view) { final ViewHolder holder = (ViewHolder) view.getTag(); holder.imageView.setImageResource(item.iconRes); holder.textView.setText(item.title); } } }