これは私がポップアップメニューを取得するにはonclick
機能を設定していますが、いずれかが、私はポップアップメニューのレイアウトが表示されますholder.cartクリックでこれを解決することができ、私はラインリサイクルカードビューでアイテムクリックをポップアップする方法は?
PopupMenu popup = new PopupMenu(mContext, view);
showPopupMenu(holder.cart);
でnullポインタ例外を取得していますが、holder.cart
に私のコードですここで私はmenuinflaterを使っていました。レイアウトインフレータに変更し、ポップアップビューを表示したいと思います。
import android.content.Context;
import android.support.v7.widget.PopupMenu;
import android.content.DialogInterface;
import android.content.Intent;
import android.graphics.Typeface;
import android.view.MenuInflater;
import android.support.v7.app.AlertDialog;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
import java.util.ArrayList;
public class RecyclerAdapterProducts extends RecyclerView.Adapter<RecyclerAdapterProducts.ViewHolder> {
//ArrayList<Products> products;
OnItemClickListener clickListener;
ArrayList<ImageAndName> imageAndNames;
private Context mContext;
//byte[] imz;
public RecyclerAdapterProducts(ArrayList<ImageAndName> imageAndNames){
this.imageAndNames=imageAndNames;
//this.discounts=discounts;
}
/*public SimpleRecyclerAdapter(ArrayList<Products> products){
this.products=products;
}*/
class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
// each data item is just a string in this case
/*public TextView name,offer;
public TextView price;*/
public ImageView im;
public TextView name;
public TextView part;
public ImageButton cart;
public int position;
public ViewHolder(View v) {
super(v);
name = (TextView)v.findViewById(R.id.code);
part = (TextView)v.findViewById(R.id.textView11);
part.setTypeface(null, Typeface.BOLD_ITALIC);
im = (ImageView)v.findViewById(R.id.productImg);
v.setOnClickListener(this);
cart = (ImageButton)v.findViewById(R.id.imageView2);
/*cart.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
*/
/*// LayoutInflater inflater = LayoutInflater.from(RecyclerAdapterProducts.this);
View popupView = LayoutInflater.from(mContext).inflate(R.layout.quantityalertdialog, null);
final EditText subEditText = (EditText)popupView.findViewById(R.id.dialogEditText);
AlertDialog.Builder builder = new AlertDialog.Builder(mContext);
*//*builder.setTitle("AlertDialog");
builder.setMessage("AlertDialog Message");*//*
builder.setView(popupView);
AlertDialog alertDialog = builder.create();
builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
builder.show();*/
//View popupView = LayoutInflater.from(mContext).inflate(R.layout.quantityalertdialog, null);
/* }
});*/
//price = (TextView)v.findViewById(R.id.serviceDate);
//offer=(TextView)v.findViewById(R.id.offer);
}
@Override
public void onClick(View v) {
clickListener.onItemClick(v, getAdapterPosition());
}
}
public RecyclerAdapterProducts(Context mContext, ArrayList<ImageAndName> imageAndNames) {
this.mContext = mContext;
this.imageAndNames = imageAndNames;
}
@Override
public RecyclerAdapterProducts.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View v = LayoutInflater.from(parent.getContext())
.inflate(R.layout.recycler_card_individual_product, parent, false);
ViewHolder vh = new ViewHolder(v);
return vh;
}
@Override
public void onBindViewHolder(final RecyclerAdapterProducts.ViewHolder holder,int position) {
holder.im.setImageResource(imageAndNames.get(position).getIconImageResource());
holder.name.setText(imageAndNames.get(position).getName());
holder.part.setText(imageAndNames.get(position).getPartno());
holder.cart.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
showPopupMenu(holder.cart);
}
});
holder.position=position;
}
private void showPopupMenu(View view) {
// inflate menu
PopupMenu popup = new PopupMenu(mContext, view);
MenuInflater inflater = popup.getMenuInflater();
inflater.inflate(R.menu.menu_album, popup.getMenu());
popup.setOnMenuItemClickListener(new MyMenuItemClickListener());
popup.show();
}
class MyMenuItemClickListener implements PopupMenu.OnMenuItemClickListener {
public MyMenuItemClickListener() {
}
@Override
public boolean onMenuItemClick(MenuItem menuItem) {
switch (menuItem.getItemId()) {
case R.id.action_add_favourite:
Toast.makeText(mContext, "Add to Wishlist", Toast.LENGTH_SHORT).show();
return true;
case R.id.action_play_next:
//Toast.makeText(mContext, "Play next", Toast.LENGTH_SHORT).show();
return true;
default:
}
return false;
}
}
/*final Products pd= products.get(position);
if (discounts!=null && discounts.size()>0) {
for (int i = 0; i < discounts.size(); i++) {
if (pd.getId().equals(((ArrayList)discounts.get(i)).get(0))){
ArrayList disc=(ArrayList)discounts.get(i);
holder.offer.setVisibility(View.VISIBLE);
holder.offer.setText("Buy "+disc.get(1)+" to get "+disc.get(2)+"% discount");
}
else {
holder.offer.setVisibility(View.GONE);
}
}
}
holder.name.setText(pd.getName());
holder.position=position;
holder.price.setText(pd.getList_price() + "\u20B9");
if (pd.getId()!=null) {
new AsyncTask<Integer, Void, ImageModel>() {
private ViewHolder v;
private ImageModel img;
@Override
protected ImageModel doInBackground(Integer... params) {
//v = params[0];
final String url = "http://164.164.35.38:443/seis/productTemplateController/getProductImage/"+params[0];
RestTemplate restTemplate = new RestTemplate();
restTemplate.getMessageConverters().add(new MappingJackson2HttpMessageConverter());
img = restTemplate.getForObject(url, ImageModel.class);
//byte[] ing=
return img;
}
@Override
protected void onPostExecute(final ImageModel result) {
//super.onPostExecute(result);.get(0).toString().getBytes()
if (result != null && result.getImage()!=null) {
//imz=result.get(0).toString().getBytes();
// If this item hasn't been recycled already, hide the
// progress and set and show the image
new AsyncTask<ViewHolder, Void, Bitmap>() {
private ViewHolder v;
@Override
protected Bitmap doInBackground(ViewHolder... params) {
v = params[0];
Bitmap bm = BitmapFactory.decodeByteArray(android.util.Base64.decode(result.getImage(), 0), 0, android.util.Base64.decode(result.getImage(), 0).length);
return bm;
}
@Override
protected void onPostExecute(Bitmap result) {
super.onPostExecute(result);
if (v.position == position) {
// If this item hasn't been recycled already, hide the
// progress and set and show the image
v.im.setImageBitmap(result);
}
}
}.execute(holder);
//v.im.setImageBitmap(result);
}
}
}.execute(pd.getId());
}*/
@Override
public int getItemCount() {
return imageAndNames.size();
}
public interface OnItemClickListener {
public void onItemClick(View view, int position);
}
public void SetOnItemClickListener(final OnItemClickListener itemClickListener) {
this.clickListener = itemClickListener;
}
}
をあなたはポップアップメニューを表示したり、カートの新しいレイアウトを膨らませたりしたいですか? –
レイアウトを拡張し、肯定と否定のボタンを示す警告ダイアログを設定したいと思います。 –
ok私は答えを..投稿していて、もしそれが役に立ったらupvote –