2016-11-21 4 views
0

メニューオプションを有効にする3ドットをクリックすると編集と削除の2つのオプションが開き、このようなポップアップを作成します。しかし、私はそれを設定しようとして問題に直面している。 3ドットを押すと、下にポップアップが表示されます。 3つの点の隣に表示されます。android

<?xml version="1.0" encoding="utf-8"?> 
    <menu xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto"> 
      <item 
      android:id="@+id/edit_post" 
      android:orderInCategory="100" 
      android:title="Edit"/> 
      <item 
      android:id="@+id/Delete_post" 
      android:orderInCategory="100" 
      app:showAsAction="never" 
      android:title="Delete"/> 
    </menu> 

Javaコード:

private Button options = (Button) view.findViewById(R.id.OptionsButton); 
     options.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       PopupMenu popup = new PopupMenu(activity, options); 
       popup.getMenuInflater().inflate(R.menu.options_popup, popup.getMenu()); 
       popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() { 
        public boolean onMenuItemClick(MenuItem item) { 
         int id = item.getItemId(); 
         if (id == R.id.edit_post) { 

          //editpost here 


         } else if (id == R.id.Delete_post) { 
          Toast.makeText(activity, "You Clicked : " + item.getTitle(), Toast.LENGTH_SHORT).show(); 

          //delete post here 
         } 

         return true; 
        } 
       }); 

       popup.show();//showing popup menu 
      } 
     }); //closing the setOnClickListener method 

アダプターコード:ポップアップオプションの

public class profileadapter extends  RecyclerView.Adapter<profileadapter.MyViewHolder> { 
    private List<ProfileModel> profileModelList; 
    private ProfileModel profileModel; 
    private Activity activity; 
    private Button options; 
    public profileadapter(Activity activity, List<ProfileModel> profileModelList) { 
    this.activity = activity; 
    this.profileModelList = profileModelList; 
    } 

    public class MyViewHolder extends RecyclerView.ViewHolder { 
    public TextView users_name, users_post_title, home_location, home_date, /*complaint_status, */ 
      home_like_textview, 
      home_comment_textview, home_share_textview; 
    public ImageView complaint_posted; 

    public MyViewHolder(View view) { 
     super(view); 
     users_name = (TextView) view.findViewById(R.id.users_name); 
     users_post_title = (TextView) view.findViewById(R.id.users_post_title); 
     home_location = (TextView) (view).findViewById(R.id.home_location); 
     home_date = (TextView) (view).findViewById(R.id.home_date); 
     home_like_textview = (TextView) (view).findViewById(R.id.home_like_textview); 
     home_comment_textview = (TextView) (view).findViewById(R.id.home_comment_textview); 
     home_share_textview = (TextView) (view).findViewById(R.id.home_share_textview); 
     complaint_posted = (ImageView) (view).findViewById(R.id.complaint_posted); 
     options = (Button) view.findViewById(R.id.OptionsButton); 
     options.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       PopupMenu popup = new PopupMenu(activity, options); 
       popup.getMenuInflater().inflate(R.menu.options_popup, popup.getMenu()); 
       popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() { 
        public boolean onMenuItemClick(MenuItem item) { 
         int id = item.getItemId(); 
         if (id == R.id.edit_post) { 
          //editpost here 
         } else if (id == R.id.Delete_post) { 
          Toast.makeText(activity, "You Clicked : " + item.getTitle(), Toast.LENGTH_SHORT).show(); 
          //delete post here 
         } 
         return true; 
        } 
       }); 
       popup.show();//showing popup menu 
      } 
     }); //closing the setOnClickListener method 
     complaint_posted.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       Intent intent = new Intent(activity, DetailPost.class); 
       activity.startActivity(intent); 
      } 
     }); 
    } 
} 

@Override 
public profileadapter.MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
    View itemView = LayoutInflater.from(activity) 
      .inflate(R.layout.profile_cardview, parent, false); 
    return new profileadapter.MyViewHolder(itemView); 
} 
@Override 
public void onBindViewHolder(profileadapter.MyViewHolder holder, int position) { 
    ProfileModel post = (profileModelList.get(position)); 
    holder.users_name.setText(post.getUsers_email()); 
    holder.users_post_title.setText(post.getPost_title()); 
    holder.home_location.setText(post.getLocation()); 
    holder.home_date.setText(String.valueOf(post.getPost_date())); 
    // Log.i("Date", post.getPost_date()); 
    // holder.complaint_status.setText(post.getPost_status()); 
    holder.home_like_textview.setText(String.valueOf(post.getPost_like())); 
    holder.home_comment_textview.setText(String.valueOf(post.getPost_comment())); 
    holder.home_share_textview.setText(String.valueOf(post.getPost_share())); 
    Log.i("position", String.valueOf(position)); 
    holder.complaint_posted.setImageResource(post.getComplaint_posted()); 
    // holder.home_users_image.setImageResource(post.getUsers_profile()); 
} 

@Override 
public int getItemCount() { 
    return profileModelList.size(); 
} 
} 

レイアウト:

Image

+0

にする必要がありますが、それは画像の下部にある3つのドットの横に表示されますように...あなたのJavaコードを表示ルックス、cricket_007 @ください –

+0

編集します。 Javaコードを見てください。 – Sara

+0

コードの詳細は、ください。あなたはいくつかのCardViewとリストアダプターを使用しているようです。コードにはメニューが表示されていますが、どのオプションメニューボタンをクリックリスナーに接続しましたか? –

答えて

0

あなたの問題は、それぞれ前のを上書きするということですオプションボタンをアダプタクラスに格納することによって、ボタンをクリックします。したがって、ポップアップは最後のものにのみ表示されます。

代わりに、MyViewHolder

における店舗 Button options;

holder.options.setOnClickListeneronBindViewHolder

関連する問題