这个是项布局<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"> <ImageView
android:id="@+id/imgMachine"
android:layout_width="@dimen/dp_72"
android:layout_height="@dimen/dp_72"
android:layout_marginLeft="@dimen/dp_8"
android:layout_marginRight="@dimen/dp_8"
android:clickable="true"
android:longClickable="true"
android:src="@drawable/machine" /> <LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="horizontal"> <TextView
android:id="@+id/txtMachineTitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="一号清洗站#1"
android:textSize="@dimen/sp_8" /> <TextView
android:id="@+id/txtMachineMac"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:visibility="gone" />
</LinearLayout>
</LinearLayout>
这个是自定义Adapter里面的ViewHolderclass MachineGridViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener { /**
* The Machine.
*/
ImageView machine;
/**
* The Title.
*/
TextView title; /**
* The Mac.
*/
TextView mac; /**
* Instantiates a new Machine grid view holder.
*
* @param itemView the item view
*/
public MachineGridViewHolder(View itemView) {
super(itemView); machine = (ImageView) itemView.findViewById(R.id.imgMachine);
title = (TextView) itemView.findViewById(R.id.txtMachineTitle);
mac = (TextView) itemView.findViewById(R.id.txtMachineMac); machine.setOnClickListener(this);
} @Override
public void onClick(View v) {
if (listener != null) {
listener.onItemClick(mac.getText().toString());
}
}
}
很奇怪title和mac控件都能正常响应Click事件,但是machine这个ImageView死活没效果。
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"> <ImageView
android:id="@+id/imgMachine"
android:layout_width="@dimen/dp_72"
android:layout_height="@dimen/dp_72"
android:layout_marginLeft="@dimen/dp_8"
android:layout_marginRight="@dimen/dp_8"
android:clickable="true"
android:longClickable="true"
android:src="@drawable/machine" /> <LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="horizontal"> <TextView
android:id="@+id/txtMachineTitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="一号清洗站#1"
android:textSize="@dimen/sp_8" /> <TextView
android:id="@+id/txtMachineMac"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:visibility="gone" />
</LinearLayout>
</LinearLayout>
这个是自定义Adapter里面的ViewHolderclass MachineGridViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener { /**
* The Machine.
*/
ImageView machine;
/**
* The Title.
*/
TextView title; /**
* The Mac.
*/
TextView mac; /**
* Instantiates a new Machine grid view holder.
*
* @param itemView the item view
*/
public MachineGridViewHolder(View itemView) {
super(itemView); machine = (ImageView) itemView.findViewById(R.id.imgMachine);
title = (TextView) itemView.findViewById(R.id.txtMachineTitle);
mac = (TextView) itemView.findViewById(R.id.txtMachineMac); machine.setOnClickListener(this);
} @Override
public void onClick(View v) {
if (listener != null) {
listener.onItemClick(mac.getText().toString());
}
}
}
很奇怪title和mac控件都能正常响应Click事件,但是machine这个ImageView死活没效果。
public class MainActivity extends AppCompatActivity { private RecyclerView mRecyclerView;
MyAdapter myAdapter; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); myAdapter = new MyAdapter(this);
myAdapter.setItemClick(new ItemClick() {
@Override
public void onItemClick(String s) {
Toast.makeText(MainActivity.this, s, Toast.LENGTH_SHORT).show();
}
});
mRecyclerView = (RecyclerView) findViewById(R.id.id_recyclerview);
mRecyclerView.setLayoutManager(new LinearLayoutManager(this));
mRecyclerView.setAdapter(myAdapter);
}}
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.MachineGridViewHolder> { ItemClick listener;
Context context; MyAdapter (Context context ) {
this.context = context;
} @Override
public MachineGridViewHolder onCreateViewHolder(ViewGroup parent, int viewType)
{
MachineGridViewHolder holder = new MachineGridViewHolder(LayoutInflater.from(
context).inflate(R.layout.item, parent,
false));
return holder;
} @Override
public void onBindViewHolder(MachineGridViewHolder holder, int position)
{ } @Override
public int getItemCount()
{
return 20;
} public void setItemClick(ItemClick itemClick) {
this.listener = itemClick;
} class MachineGridViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener { /**
* The Machine.
*/
ImageView machine;
/**
* The Title.
*/
TextView title; /**
* The Mac.
*/
TextView mac; /**
* Instantiates a new Machine grid view holder.
*
* @param itemView the item view
*/
public MachineGridViewHolder(View itemView) {
super(itemView); machine = (ImageView) itemView.findViewById(R.id.imgMachine);
title = (TextView) itemView.findViewById(R.id.txtMachineTitle);
mac = (TextView) itemView.findViewById(R.id.txtMachineMac); machine.setOnClickListener(this);/* machine.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
listener.onItemClick(mac.getText().toString());
}
});*/ } @Override
public void onClick(View v) {
if (listener != null) {
listener.onItemClick(mac.getText().toString());
}
}
}
}
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"> <ImageView
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:id="@+id/imgMachine"
android:clickable="true"
android:longClickable="true"
android:src="@mipmap/ic_launcher" /> <LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="horizontal"> <TextView
android:id="@+id/txtMachineTitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="一号清洗站#1"/> <TextView
android:id="@+id/txtMachineMac"
android:text="mac"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:visibility="gone" />
</LinearLayout>
</LinearLayout>