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.DataModel.NewsSource; import com.vladstoick.DialogFragment.RenameDialogFragment; import com.vladstoick.Fragments.NewsGroupDetailFragment; 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 NewsSourceAdapter extends BaseAdapter { static class RowHolder { @InjectView(R.id.newsSourceTitle) TextView mTitle; @InjectView(R.id.numberOfNews) TextView mNumberOfNews; @InjectView(R.id.overflow_icon) ImageButton mButton; public RowHolder(View view) { Views.inject(this, view); } } private final Context context; private NewsGroup data; public StiriApp app; public NewsGroupDetailFragment fragment; public void setData(NewsGroup data) { this.data = data; } public NewsSourceAdapter(NewsGroup data, Context context, StiriApp app, NewsGroupDetailFragment fragment) { this.context = context; this.data = data; this.app = app; this.fragment = fragment; } @Override public int getCount() { return data.newsSources.size(); } @Override public NewsSource getItem(int position) { return data.newsSources.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 NewsSource ns = getItem(position); if (row == null) { LayoutInflater inflater = ((Activity) context).getLayoutInflater(); row = inflater.inflate(R.layout.list_row_newsgroup_detail, 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) { buildPopUpWindow(v, ns); } else { buildPopUpMenu(v, ns); } } }); holder.mTitle.setText(ns.getTitle()); holder.mNumberOfNews.setText(ns.getNumberOfUnreadNews() + ""); return row; } @TargetApi(11) public void buildPopUpMenu(View v, final NewsSource newsSource) { PopupMenu popupMenu = new PopupMenu(context, v); MenuInflater inflater = popupMenu.getMenuInflater(); inflater.inflate(R.menu.popupmenu_newssource, popupMenu.getMenu()); popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() { @Override public boolean onMenuItemClick(MenuItem item) { switch (item.getItemId()) { case R.id.action_delete: { deleteSource(newsSource); return true; } } return false; } }); popupMenu.show(); } public void buildPopUpWindow(View v, final NewsSource newsSource) { AlertDialog.Builder builder = new AlertDialog.Builder(context); builder.setItems(R.array.popupmenu_newsource, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { switch (which) { case 0: { deleteSource(newsSource); } } } }); builder.setInverseBackgroundForced(true); builder.create(); builder.show(); } public void deleteSource(final NewsSource newsSource) { NewsDataSource.getInstance().deleteNewsSource(newsSource); } }