我檢查瞭如何製作可單擊的RecyclerView的各種示例,並創建一個每行左側有一個圖標並且兩個文本標籤彼此堆疊在右側的示例,但我可以只有點擊圖標纔會觸發點擊處理程序。我希望能夠點擊行中的任何位置。我在這段代碼中做了什麼錯誤?只有recycleview單元格中的圖標是可點擊的
<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.RecyclerView android:id="@+id/record_list"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginLeft="16dp"
android:layout_marginRight="16dp"
android:clickable="true"
app:layoutManager="LinearLayoutManager"
tools:listitem="@layout/list_content"/>
<!-- list content -->
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:clickable="true"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<ImageView
android:id="@+id/icon"
android:layout_width="30dp"
android:layout_height="30dp"
android:src="@drawable/ic_icon"/>
<TextView
android:id="@+id/desc"
style="?android:attr/textAppearanceMedium"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_toEndOf="@id/icon"
android:layout_toRightOf="@id/icon"
android:layout_alignParentEnd="true"
android:layout_alignParentRight="true"
android:padding="0dp"
android:textIsSelectable="true"/>
<TextView
android:id="@+id/user_type"
style="?android:attr/textAppearanceSmall"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_toEndOf="@id/icon"
android:layout_toRightOf="@id/icon"
android:layout_below="@id/desc"
android:layout_alignParentEnd="true"
android:layout_alignParentRight="true"
android:padding="0dp"
android:textIsSelectable="true"
android:textStyle="italic"/>
</RelativeLayout>
public class SimpleItemRecyclerViewAdapter
extends RecyclerView.Adapter<SimpleItemRecyclerViewAdapter.ViewHolder> {
private final List<Record> mValues;
public SimpleItemRecyclerViewAdapter(List<Record> items) {
mValues = items;
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext())
.inflate(R.layout.list_content, parent, false);
return new ViewHolder(view);
}
@Override
public void onBindViewHolder(final ViewHolder holder, final int position) {
Record record = mValues.get(position);
holder.mIcon.setImageResource(record.iconRes);
holder.mDescText.setText(record.desc);
holder.mDetailText.setText(record.detail);
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Context context = v.getContext();
Intent intent = new Intent(context, DetailActivity.class);
context.startActivity(intent);
}
});
}
public class ViewHolder extends RecyclerView.ViewHolder {
public final ImageView mIcon;
public final TextView mDescText;
public final TextView mDetailText;
public ViewHolder(View view) {
super(view);
mIcon = (ImageView)view.findViewById(R.id.icon);
mDescText = (TextView) view.findViewById(R.id.desc);
mDetailText = (TextView) view.findViewById(R.id.detail);
}
}
}
修訂
當我點擊在行,我看到logcat的記錄下面
I/ViewRootImpl: ViewRoot's Touch Event : ACTION_DOWN
I/ViewRootImpl: ViewRoot's Touch Event : ACTION_UP
等都以線條的東西是響應,但它不是ItemView控件和ItemView控件具有沒有父母。
您是否嘗試過實施recyclerviewItem點擊事件? –
選中此鏈接。 http://sapandiwakar.in/recycler-view-item-click-handler/ –
@AmitThakkar物品點擊處理程序的作品!從本質上講,我們需要聽取來自回收者視圖的觸摸事件! –