2017-02-21 20 views
1

如何在圖片的Longclick上更改我的圖庫應用程序的菜單? 我已經研究了所有這些環節 Link for Menu如何更改圖像的Longpress上的操作欄上的菜單?

這個鏈接是關於菜單可將菜單選項 Onprepareoptionsmenu

public class PictureHolder extends RecyclerView.ViewHolder implements View.OnClickListener, View.OnLongClickListener { 

    public ImageView pictureThumbnail; 
    public PictureHolder(View itemView) { 
     super(itemView); 
     itemView.setOnClickListener(this); 
     itemView.setOnLongClickListener(this); 
     this.pictureThumbnail = (ImageView) itemView.findViewById(R.id.pictureThumbnail); 
    } 
    @Override 
    public boolean onLongClick(View view) { 

     GalleryBrowserActivity.a=0; 
     // g.tRY(); 
     Log.d("hi","hello Image"); 
     return true; 
    } 
    @Override 
    public void onClick(View v) { 
     Context context = v.getContext(); 
     Intent intent = new Intent(context, PictureDetailActivity.class); 
     Picture picture = (Picture) galleryList.get(getAdapterPosition()); 
     intent.putExtra(AppConstants.PICTURE_PATH, picture.getPath()); 
     Activity activity = (Activity) context; 
     if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP) { 
      ActivityOptions options = ActivityOptions.makeSceneTransitionAnimation(activity, v, AppConstants.PICTURE_ANIMATION); 
      context.startActivity(intent, options.toBundle()); 
     } else { 
      context.startActivity(intent); 
     } 
    } 

另一類是: 這是在我定義菜單

public boolean onCreateOptionsMenu(Menu menu) { 
    if(a==1) 
    getMenuInflater().inflate(R.menu.menu_gallery_browser, menu); 
    if(a==0) 
    getMenuInflater().inflate(R.menu.picture_longclick, menu); 

    return true; 
} 
+1

請張貼你已經嘗試並不起作用的代碼做其他工作。 –

+0

A_J我現在更新了代碼 – Hoori

回答

1

嘗試爲點擊操作定義一個接口,這樣你的支架和適配器就變得更乾淨。

public interface IClickListener { 
     void onItemClick(View view, int position); 
     void onItemLongClick(View view, int position); 
    } 


public class MyAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> { 

    private IClickListener listener; 
    private List<Object> mDataset; 

    public MyAdapter(List<Object> mDataSet, IClickListener listener) { 
     this.mDataset = mDataSet; 
     this.listener = listener; 
    } 


    @Override 
    public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
     View view = LayoutInflater.from(parent.getContext()) 
       .inflate(R.layout.item_loading, parent, false); 
     return new PictureHolder(view, listener); 
    } 

    @Override 
    public int getItemCount() { 
     //... 
     return 0; 
    } 

    @Override 
    public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { 
     //... 
    } 

    private static class PictureHolder extends RecyclerView.ViewHolder implements View.OnClickListener, View.OnLongClickListener { 

     private IClickListener listener; 
     public ImageView pictureThumbnail; 

     public PictureHolder(View itemView, IClickListener listener) { 
      super(itemView); 
      this.listener = listener; 
      itemView.setOnClickListener(this); 
      itemView.setOnLongClickListener(this); 
      this.pictureThumbnail = (ImageView) itemView.findViewById(R.id.pictureThumbnail); 
     } 

     @Override 
     public boolean onLongClick(View view) { 
      listener.onItemClick(view, getAdapterPosition()); 
      return true; 
     } 

     @Override 
     public void onClick(View view) { 
      listener.onItemLongClick(view, getAdapterPosition()); 
     } 
    } 

在您的活動,實現接口,讓您的活動適配器的參考和活動

public class MyActivity extends AppCompatActivity implements IClickListener { 

    private MyAdapter mAdapter; 
    private Menu mMenu; 

    @Override 
    protected void onCreate(@Nullable Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     //.. 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 

     if(a==1) 
      mMenu = getMenuInflater().inflate(R.menu.menu_gallery_browser, menu); 
     if(a==0) 
      mMenu = getMenuInflater().inflate(R.menu.picture_longclick, menu); 


     return super.onCreateOptionsMenu(menu); 

    } 

    private void initRecyclerview(){ 
     //Recyclerview initialization 
     mAdapter = new MyAdapter(dataset, this); 
    } 


    @Override 
    public void onItemClick(View view, int position) { 
     //Do your work here like this, or change visibilities of menu items 
     mMenu = getMenuInflater().inflate(R.menu.menu_gallery_browser, mMenu); 
    } 

    @Override 
    public void onItemLongClick(View view, int position) { 
     //Do your work here 
    } 
} 
+0

Thankyou @Hmm ..你的想法適合我 – Hoori

相關問題