2016-03-23 24 views
0

ich eine Liste erstellt, möchte ich eine clicklistener implementieren, aber das Problem, dass der Klick nichtRecyclerview Klicken

erfasst
public static class MyViewHolder extends RecyclerView.ViewHolder 
     implements View.OnClickListener { 

    public TextView design, ip, port, number, id; 

    public MyViewHolder(View view) { 
     super(view); 
     view.setOnClickListener(this); 
     design = (TextView) view.findViewById(R.id.txt_device_designation); 
     port = (TextView) view.findViewById(R.id.txt_device_port); 
     ip = (TextView) view.findViewById(R.id.txt_device_ip); 
     number = (TextView) view.findViewById(R.id.txt_device_number); 
     id = (TextView) view.findViewById(R.id.txt_device_id); 
    } 

    @Override 
    public void onClick(View v) { 
     Log.i("Test", "Test"); 
    } 
} 

Jetzt möchte ich, wenn ich auf das Menüsymbol klicken, ich möchte, erscheint ein Menü aus der Boden ich es geschafft, den Klick auf den Button und die Position zu erhalten, aber können Sie mir das Menü aufzurufen helfen

My Screen

public MyViewHolder(View view) { 
     super(view); 
     view.setOnClickListener(this); 
     design = (TextView) view.findViewById(R.id.txt_device_designation); 
     port = (TextView) view.findViewById(R.id.txt_device_port); 
     ip = (TextView) view.findViewById(R.id.txt_device_ip); 
     number = (TextView) view.findViewById(R.id.txt_device_number); 
     id = (TextView) view.findViewById(R.id.txt_device_id); 
     imageViewContextMenu = (ImageView) view.findViewById(R.id.iv_context_menu); 
     linearLayoutDeviceClick = (LinearLayout) view.findViewById(R.id.linearLayoutDeviceClick); 

     imageViewContextMenu.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       Log.i("Test", String.valueOf(getPosition())); //Test succes 
      } 
     }); 

     linearLayoutDeviceClick.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       Log.i("TestLayout", String.valueOf(getPosition())); //Test succes 

      } 
     }); 
    } 
+0

überprüfen Sie dies: http://www.littlerobots.nl/blog/Handle-Android-RecyclerView-Clicks/ –

Antwort

1

Sie müssen setOnClickListener nach findViewById

  1. wenn Sie für ganze Element erstellen auf klicken möchten, können Sie findViewById Ihre root-layout wie relativelayout oder Linearlayout usw. und dann eingestellt onclicklistner
  2. Wenn Sie auf klicken für spezifische Ansicht erstellen möchten, können Sie findViewById Ihre Ansicht und dann onclicklistner
1

hinzufügen onItemTouchListener auf Ihre Recycler Ansicht verwenden.

mRecyclerView.addOnItemTouchListener(new RecyclerItemClickListener(mActivity, mRecyclerView, new RecyclerItemClickListener.OnItemClickListener() { 
        @Override 
        public void onItemClick(View view, int position) 
        { 
         ///////// add your task 
        } 


        }); 
+0

vielen Dank Jungs, es funktioniert. –

+0

Wenn es Ihnen behilflich ist. Nehmen Sie meine Antwort an. – KDeogharkar

0

Sie können Ihre Klick Zuhörer in onBindViewHolder() oder in onCreateViewHolder() Ihres recyclerview Adapter durchführen.

@Override 
public void onBindViewHolder(ViewHolder holder, final int position) { 
holder.itemView.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
     //perform your operations here 
     } 
}); 

} 

Wo itemView Ihrer Ansicht nach in recyclerview.Use für jedes Element ist

holder.buttonName.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
     //perform your operations here 
     } 
}); 

} 

eine Schaltfläche klicken in der Ansicht auszuführen.

Verwandte Themen