Sar*_*esh 7 java xml android android-recyclerview
我将问一个非常基本的问题,但我长期陷入其中.
卡片视图后,有一个循环视图,每行有2个图像.现在我想在图像而不是recycleview上创建点击监听器.
此活动的相应布局(layout_main.xml)(MainActivity.java)仅包含recyclerview.每行的元素都在另一个布局中(layout_images.xml).我从layout_images.xml获取图像并在适配器类(Adapter.java)中膨胀它们.
现在如何将动作监听器仅放在图像上.
其次,我想获得我点击的图像.怎么做到这一点.比如,当我们点击一个视图时,我们创建了一些方法
public void onClick(View view){
// some code here
}
Run Code Online (Sandbox Code Playgroud)
其中view是我们点击的对象.在我的情况下如何获取我点击的图像.使用类型转换,当用户不点击图像时,它可能会抛出异常.
小智 8
recyclelerView中的多个onClick事件:
public static class MyViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener, View.OnLongClickListener {
public ImageView iconImageView;
public TextView iconTextView;
public MyViewHolder(final View itemView) {
super(itemView);
iconImageView = (ImageView) itemView.findViewById(R.id.myRecyclerImageView);
iconTextView = (TextView) itemView.findViewById(R.id.myRecyclerTextView);
// set click event
itemView.setOnClickListener(this);
iconTextView.setOnClickListener(this);
// set long click event
iconImageView.setOnLongClickListener(this);
}
// onClick Listener for view
@Override
public void onClick(View v) {
if (v.getId() == iconTextView.getId()) {
Toast.makeText(v.getContext(), "ITEM PRESSED = " + String.valueOf(getAdapterPosition()), Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(v.getContext(), "ROW PRESSED = " + String.valueOf(getAdapterPosition()), Toast.LENGTH_SHORT).show();
}
}
//onLongClickListener for view
@Override
public boolean onLongClick(View v) {
final AlertDialog.Builder builder = new AlertDialog.Builder(v.getContext());
builder.setTitle("Hello Dialog")
.setMessage("LONG CLICK DIALOG WINDOW FOR ICON " + String.valueOf(getAdapterPosition()))
.setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
});
builder.create().show();
return true;
}
}
Run Code Online (Sandbox Code Playgroud)
要获取单击的项目,请匹配视图ID ievgetId()== yourViewItem.getId()
您必须在方法内部设置onClickListener为ImageViews onBindViewHolder,请参考以下LOC供参考(代码在onBindViewHolder方法内部)
holder.imageView1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//put your code for first imageview here
}
});
holder.imageView2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//put your code for second imageView here
}
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
16221 次 |
| 最近记录: |