好的,我知道,可能有人已经问过这个问题了.我已经在this link上找到了针对我的问题的可能解决方案.但是,由于未知原因,该解决方案对我不起作用.
我想在RecyclerView中单击某项(CardView)时显示Toast.此Toast必须向我显示单击的项目的位置.
当我单击CardView时,我看到了波纹-这意味着单击了该卡-但不幸的是,我没有看到任何吐司.有人可以解释我为什么吗?提前致谢.
这是我的适配器:
public class MainRecyclerViewAdapter extends RecyclerView.Adapter<MainRecyclerViewAdapter.MyMainViewHolder> {
private List<Information> mainInfo;
MyDatabase myDatabase;
public MainRecyclerViewAdapter(List<Information> mainInfo) {
this.mainInfo = mainInfo;
}
public static class MyMainViewHolder extends RecyclerView.ViewHolder {
TextView titleTextView, notesTextView, dateTextView, timeTextView;
ImageView imageView;
LinearLayout linearLayout;
public MyMainViewHolder(View itemView) {
super(itemView);
linearLayout = (LinearLayout) itemView.findViewById(R.id.mainLayout);
imageView = (ImageView) itemView.findViewById(R.id.imgIcon);
titleTextView = (TextView) itemView.findViewById(R.id.title_TextView);
notesTextView = (TextView) itemView.findViewById(R.id.notes_TextView);
dateTextView = (TextView) itemView.findViewById(R.id.date_TextView);
timeTextView = (TextView) itemView.findViewById(R.id.time_TextView);
itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(v.getContext(), "Position: " + Integer.toString(getAdapterPosition()), Toast.LENGTH_LONG).show();
}
});
}
}
@Override
public MyMainViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.main_single_raw, parent, false);
MyMainViewHolder holder = new MyMainViewHolder(v);
return holder;
}
public void delete(int position){
mainInfo.remove(position);
notifyItemRemoved(position);
}
@Override
public void onBindViewHolder(final MyMainViewHolder holder, final int position) {
holder.imageView.setImageResource(mainInfo.get(position).getICON_ID());
holder.titleTextView.setText(mainInfo.get(position).getTITLE());
holder.notesTextView.setText(mainInfo.get(position).getNOTES());
holder.dateTextView.setText(mainInfo.get(position).getDATE());
holder.timeTextView.setText(mainInfo.get(position).getTIME());
}
@Override
public int getItemCount() {
return mainInfo.size();
}}
这是我的cardView的布局文件:
<android.support.v7.widget.CardView
xmlns:card_view="http://schemas.android.com/apk/res-auto"
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/card_view1"
android:clickable="true"
android:layout_width="match_parent"
android:layout_height="match_parent"
card_view:cardCornerRadius="3dp"
android:layout_margin="5dp">
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/mainLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="0.5dp"
android:clickable="true"
android:background="?android:selectableItemBackground"
android:orientation="horizontal"
android:weightSum="10">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="fill_parent"
android:layout_marginLeft="16dp"
android:layout_weight="8.5">
<TextView
android:id="@+id/title_TextView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="5dp"
android:layout_marginLeft="0dp"
android:layout_marginRight="8dp"
android:layout_marginTop="5dp"
android:text="Title"
android:fontFamily="sans-serif-light"
android:textColor="#F57C00"
android:textSize="25sp"
/>
</RelativeLayout>
<View
android:layout_width="fill_parent"
android:id="@+id/divider1"
android:layout_height="0.1dp"
android:layout_below="@+id/title_TextView"
android:background="@android:color/darker_gray"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="fill_parent"
android:layout_marginLeft="16dp"
android:layout_weight="8.5">
<ImageView
android:id="@+id/imgIcon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:src="@mipmap/ic_alarm_check_grey600_48dp" />
</RelativeLayout>
<LinearLayout
android:id="@+id/linear"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1.5"
android:orientation="vertical">
<TextView
android:id="@+id/notes_TextView"
android:paddingTop="5dp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="5dp"
android:layout_marginLeft="16dp"
android:layout_marginRight="8dp"
android:text="notes"
android:textColor="#ff565656"
android:textSize="12sp" />
<TextView
android:id="@+id/date_TextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="5dp"
android:layout_marginLeft="16dp"
android:layout_marginRight="8dp"
android:text="date"
android:textColor="#ff565656"
android:textSize="12sp" />
<TextView
android:id="@+id/time_TextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="5dp"
android:layout_marginLeft="16dp"
android:layout_marginRight="8dp"
android:text="time"
android:textColor="#ff565656"
android:textSize="12sp" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
</LinearLayout>
解决方法:
问题解决了!这是工作代码:
public static class MyMainViewHolder extends RecyclerView.ViewHolder {
TextView titleTextView, notesTextView, dateTextView, timeTextView;
ImageView imageView;
LinearLayout linearLayout;
public MyMainViewHolder(final View itemView) {
super(itemView);
linearLayout = (LinearLayout) itemView.findViewById(R.id.mainLayout);
imageView = (ImageView) itemView.findViewById(R.id.imgIcon);
titleTextView = (TextView) itemView.findViewById(R.id.title_TextView);
notesTextView = (TextView) itemView.findViewById(R.id.notes_TextView);
dateTextView = (TextView) itemView.findViewById(R.id.date_TextView);
timeTextView = (TextView) itemView.findViewById(R.id.time_TextView);
itemView.setClickable(true);
itemView.setFocusableInTouchMode(true);
itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(itemView.getContext(), "Position: " + Integer.toString(getAdapterPosition()), Toast.LENGTH_LONG).show();
}
});
linearLayout.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
Toast.makeText(itemView.getContext(), "Position: " + Integer.toString(getAdapterPosition()), Toast.LENGTH_LONG).show();
}
});
}
}
所以现在,如果我单击linearLayout-在整个cardView上单击-我会看到它的位置!
积分:link