我有一个recyclerview,每行由线性布局和简单的textview组成。
在线性布局(父级)中,我使用OnItemClickListener放置了一个接口。它的工作正常但是......
该行只能在文本视图所在的区域单击。但是,线性布局的其余区域不可单击。所以当我点击该行的空白区域时,没有任何反应。但是当我向下滚动列表时,对于下面的项目,它确实可以正常工作。
我希望它清楚。为什么会这样。
这是我的适配器:
public class SearchAdapter extends RecyclerView.Adapter<SearchItemViewHolder> {
private ArrayList<String> searchArrayList;
private Context context;
private OnItemClickListener mOnItemClickListener;
public interface OnItemClickListener {
void onItemClick(String itemName);
}
public SearchAdapter(ArrayList<String> searchArrayList, Context context, OnItemClickListener onItemClickListener) {
this.searchArrayList = searchArrayList;
this.context = context;
mOnItemClickListener = onItemClickListener;
}
@Override
public SearchItemViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View itemView = LayoutInflater.from(parent.getContext())
.inflate(R.layout.food_list_item_search_view, parent, false);
return new SearchItemViewHolder(itemView);
}
@Override
public void onBindViewHolder(SearchItemViewHolder holder, final int position) {
final String currentItem = searchArrayList.get(position);
holder.itemTextView.setText(currentItem);
holder.searchItemLinearLayout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
mOnItemClickListener.onItemClick(currentItem);
}
});
// holder.setImage(holder.itemTextView.getContext(), holder.countryFlagImageView, currentCountry.getFlag());
}
// @Override
// public void onViewRecycled(SearchItemViewHolder holder) {
// super.onViewRecycled(holder);
// holder.imageLoadTask.cancel(true);
// }
@Override
public int getItemCount() {
return searchArrayList.size();
}
}
以下是我的观看者:
public class SearchItemViewHolder extends RecyclerView.ViewHolder {
TextView itemTextView;
LinearLayout searchItemLinearLayout;
// public LoadImage imageLoadTask;
public SearchItemViewHolder(View itemView) {
super(itemView);
itemTextView = (TextView)itemView.findViewById(R.id.search_item_text_view);
searchItemLinearLayout = (LinearLayout)itemView.findViewById(R.id.search_item_linearlayout);
}
// public void setImage(Context context, ImageView imageView, int resource){
// imageLoadTask = new LoadImage(context, imageView, resource);
// imageLoadTask.execute();
// }
}
这是我的xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="horizontal"
android:layout_width="match_parent"
android:id="@+id/search_item_linearlayout"
android:layout_height="60dp"
android:background="?android:attr/selectableItemBackground"
>
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="Food item"
android:textSize="20sp"
android:gravity="center_vertical"
android:id="@+id/search_item_text_view"
android:padding="10dp"
android:textColor="@color/colorPrimary"
/>
</LinearLayout>
答案 0 :(得分:1)
这种情况正在发生,因为我使用了线性布局和水平的orietaion。当我将其更改为相对布局时,它工作正常。
答案 1 :(得分:0)
让您的父布局可点击
android:clickable="true"
ViewGroup
默认情况下不可点击。