package com.vladstoick.Utils.Adapters; import android.annotation.TargetApi; import android.app.Activity; import android.app.AlertDialog; import android.content.Context; import android.content.DialogInterface; import android.os.Build; import android.view.LayoutInflater; import android.view.MenuInflater; import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.ImageButton; import android.widget.PopupMenu; import android.widget.TextView; import com.vladstoick.DataModel.NewsDataSource; import com.vladstoick.DataModel.NewsGroup; import com.vladstoick.DialogFragment.RenameDialogFragment; import com.vladstoick.Fragments.NewsGroupListFragment; import com.vladstoick.stiridinromania.R; import com.vladstoick.stiridinromania.StiriApp; import java.util.ArrayList; import butterknife.InjectView; import butterknife.Views; /** * Created by vlad on 7/19/13. */ public class NewsGroupAdapter extends BaseAdapter { static class RowHolder { @InjectView(R.id.overflow_icon) ImageButton mButton; @InjectView(R.id.groupTitle) TextView mTitle; @InjectView(R.id.numberOfGroups) TextView mNumberOfGroups; public RowHolder(View view) { Views.inject(this, view); } } public NewsGroupListFragment fragment; private final Context context; private ArrayList<NewsGroup> data; private StiriApp app; public NewsGroupAdapter(ArrayList<NewsGroup> data, Context context, StiriApp app, NewsGroupListFragment fragment) { this.context = context; this.data = data; this.app = app; this.fragment = fragment; } @Override public int getCount() { return data.size(); } @Override public NewsGroup getItem(int position) { return data.get(position); } @Override public long getItemId(int position) { return 0; } @Override public View getView(int position, View convertView, ViewGroup parent) { View row = convertView; RowHolder holder; final NewsGroup ng = getItem(position); if (row == null) { LayoutInflater inflater = ((Activity) context).getLayoutInflater(); row = inflater.inflate(R.layout.list_row_newsgroup_list, parent, false); holder = new RowHolder(row); row.setTag(holder); } else { holder = (RowHolder) row.getTag(); } holder.mButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (Build.VERSION.SDK_INT > 11) { buildPopUpMenu(v, ng); } else { buildPopUpWindow(v, ng); } } }); holder.mTitle.setText(ng.getTitle()); int noGroups = ng.getNoFeeds(); String noGroupsString; if (noGroups == 1) noGroupsString = noGroups + " " + context.getString(R.string.feed).toLowerCase(); else noGroupsString = noGroups + " " + context.getString(R.string.feeds).toLowerCase(); holder.mNumberOfGroups.setText(noGroupsString); return row; } @TargetApi(11) public void buildPopUpMenu(View v, final NewsGroup ng) { PopupMenu popupMenu = new PopupMenu(context, v); MenuInflater inflater = popupMenu.getMenuInflater(); inflater.inflate(R.menu.popupmenu_newsgroup, popupMenu.getMenu()); popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() { @Override public boolean onMenuItemClick(MenuItem item) { switch (item.getItemId()) { case R.id.action_delete: { deleteGroup(ng); return true; } case R.id.action_rename: { renameGroup(ng); return true; } } return false; } }); popupMenu.show(); } public void buildPopUpWindow(View v, final NewsGroup ng) { AlertDialog.Builder builder = new AlertDialog.Builder(context); ArrayList<String> list = new ArrayList<String>(); list.add("adda"); list.add("ggdgd"); builder.setItems(R.array.popupmenu_newsgroup, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { switch (which) { case 0: { deleteGroup(ng); } case 1: { renameGroup(ng); } } } }); builder.setInverseBackgroundForced(true); builder.create(); builder.show(); } public void deleteGroup(NewsGroup ng) { NewsDataSource.getInstance().deleteNewsGroup(ng.getId()); } public void renameGroup(NewsGroup ng) { RenameDialogFragment renameDialogFragment = new RenameDialogFragment(RenameDialogFragment.GROUP_TAG, ng.getId()); renameDialogFragment.show(fragment.getSherlockActivity().getSupportFragmentManager(), RenameDialogFragment.TAG); } }