2017-02-21 10 views
1

画像のLongclickでギャラリーアプリのメニューを変更するにはどうすればいいですか?私は、このリンクは 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); 
     } 
    } 

他のクラスをメニューオプションを変更するためのメニューについてですこれらすべてのリンク Link for Menu

を研究している は次のとおりです。 これは私がメニュー

を定義していているクラスです。
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

ありがとうございます@Hmm ..あなたの考えは私のために働く – Hoori

関連する問題