2017-04-26 91 views
2

我有,我不能设置onClickListener上recyclerview一个简单的问题,我不希望设置onClickListener上recyclerview的项目,只是recyclerview本身,我尝试了普通方式,它没“科技工作如何设置onClickListener上RecyclerView

(我试图父布局设置onClickListener但奇怪的事情不会因为我对recyclerview设置LinearLayoutManager的工作:|)

这里是我的代码:

mRecyclerView.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Log.d("onClick","Clicked"); 
     } 
    }); 

适配器:

public class RecyclerAdapter extends RecyclerView.Adapter<RecyclerAdapter.ViewHolder> { 
private List<Message> mMessage; 

public static class ViewHolder extends RecyclerView.ViewHolder{ 
    private TextView txtSender; 
    private TextView txtMessage; 

    public ViewHolder(View v) { 
     super(v); 
     txtSender = (TextView) v.findViewById(R.id.txtSender); 
     txtMessage = (TextView) v.findViewById(R.id.txtText); 
    } 

} 
@Override 
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
    View inflatedView = LayoutInflater.from(parent.getContext()) 
      .inflate(R.layout.recyclerview_item_row, parent, false); 
    return new ViewHolder(inflatedView); 
} 


public RecyclerAdapter(List<Message> messages) { 
    mMessage = messages; 
} 

@Override 
public void onBindViewHolder(ViewHolder holder, int position) { 
    Message msg = mMessage.get(position); 
    holder.txtSender.setText(msg.getSender()); 
    holder.txtMessage.setText(msg.getmessage()); 
} 

@Override 
public int getItemCount() { 
    return mMessage.size(); 
} 
+0

发表您的适配器代码... – rafsanahmad007

+0

您是否尝试过在一个FrameLayout里嵌入,并设置在监听器FrameLayout里? – ifiok

+0

嗯,这段代码应该可以工作,但这似乎很奇怪,因为行视图仍然会消耗触摸事件。 –

回答

2

根据您的需要,您需要修改R.layout.recyclerview_item_row。使用一个android LinearLayoutTextViewR.id.txtSenderR.id.txtText)都放在里面。

修改您的如下ViewHolder

public static class ViewHolder extends RecyclerView.ViewHolder 
{ 
private LinearLayout lvContainer; 
private TextView txtSender; 
private TextView txtMessage; 

public ViewHolder(View v) { 
    super(v); 
    lvContainer = (LinearLayout) v.findViewById(R.id.lv_container); // R.id.lv_container this should be in your R.layout.recyclerview_item_row 
    txtSender = (TextView) v.findViewById(R.id.txtSender); 
    txtMessage = (TextView) v.findViewById(R.id.txtText); 
} 
} 

修改您的onBindViewHolder如下

@Override 
public void onBindViewHolder(ViewHolder holder, int position) { 
Message msg = mMessage.get(position); 
holder.txtSender.setText(msg.getSender()); 
holder.txtMessage.setText(msg.getmessage()); 
holder.lvContainer.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     //Handle your click here 
    } 
}); 
} 
+0

感谢,但我并不需要该项目的onClickListener,有项目之间的空间,我需要覆盖整个屏幕 – Milad

+0

整个画面意味着覆盖单列点击还是什么? – Geek

+0

将一次整行点击工作 – Geek

相关问题