Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/183.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 选择cardview inside recyclerview也会选择其他项目_Android_Android Cardview_Android Recyclerview_Cardview - Fatal编程技术网

Android 选择cardview inside recyclerview也会选择其他项目

Android 选择cardview inside recyclerview也会选择其他项目,android,android-cardview,android-recyclerview,cardview,Android,Android Cardview,Android Recyclerview,Cardview,当我更改recyclerview中的cardview的颜色时,它也会更改其他项目的颜色。我怎样才能解决这个问题 下面是我正在更改背景颜色的模块部分: public RecyclerItemClickListener(Context context, final RecyclerView recyclerView, OnItemClickListener listener) { mListener = listener; mGestureDetector

当我更改recyclerview中的cardview的颜色时,它也会更改其他项目的颜色。我怎样才能解决这个问题

下面是我正在更改背景颜色的模块部分:

    public RecyclerItemClickListener(Context context, final RecyclerView recyclerView, OnItemClickListener listener) {

        mListener = listener;

        mGestureDetector = new GestureDetector(context, new GestureDetector.SimpleOnGestureListener() {
            @Override
            public boolean onSingleTapUp(MotionEvent e) {
                return true;
            }

            @Override
            public void onLongPress(MotionEvent e) {
                View child = recyclerView.findChildViewUnder(e.getX(), e.getY());
                if (child != null && mListener != null) {
                    mListener.onLongItemClick(child, recyclerView.getChildAdapterPosition(child));
                    int position = recyclerView.getChildLayoutPosition(child);
                    child.setBackgroundColor(mContext.getResources().getColor(R.color.blue_light));
                    Toast.makeText(mContext, "Id " + String.valueOf(position), Toast.LENGTH_SHORT).show();
                    deleteItems.add(position);
                }
            }
        });
    }
适配器的代码如下所示:

public class DiaryAdapter extends RecyclerView.Adapter<DiaryAdapter.ViewHolder>{

List <DiaryInfo> mItems;
SQLiteDatabase mydatabase;

public DiaryAdapter() {
    super();
    mItems = new ArrayList <DiaryInfo> ();
    mItems = MainActivity.diaryinfo;
}

@Override
public ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
    View v = LayoutInflater.from(viewGroup.getContext())
            .inflate(R.layout.content_main, viewGroup, false);
    ViewHolder viewHolder = new ViewHolder(v);

    mydatabase = (MainActivity.mContext).openOrCreateDatabase("remember", android.content.Context.MODE_PRIVATE, null);

    // While changing database information here change at Itemadd's done button listener also!
    mydatabase.execSQL("CREATE TABLE IF NOT EXISTS memories_pics(id VARCHAR PRIMARY KEY, path VARCHAR)");

    return viewHolder;
}

@Override
public void onBindViewHolder(ViewHolder viewHolder, int i) {
    try {
        DiaryInfo info = mItems.get(i);
        viewHolder.desc.setText(Html.fromHtml((info.getDesc()).replaceAll("''", "\"")));

        // Modifying date to readable format

        String tempDate = info.getDate();
        Locale locale = (MainActivity.mContext).getResources().getConfiguration().locale;
        String[] temp = tempDate.split("/"); // Splitting date dd/mm/yyyy
        int month = Integer.valueOf(temp[1]);
        DateFormatSymbols symbols = new DateFormatSymbols(locale);
        String[] monthNames = symbols.getMonths();
        String currentMonth = monthNames[month - 1];
        viewHolder.date.setText(currentMonth + " " + temp[0]);

        String id = info.getThumbnail();
        String path = ""; // Final path of the thumbnail

        Cursor cursor = mydatabase.rawQuery("SELECT * FROM memories_pics WHERE id=\'" + id + "\' LIMIT 1", null);
        if (cursor.moveToFirst()) {
            while (cursor.isAfterLast() == false) {
                path = cursor.getString(cursor
                        .getColumnIndex("path"));
                cursor.moveToNext();
                break;
            }
        }
        cursor.close();

        File file = null;

        // Either load image from user clicked images or a default image

        if ((String.valueOf(path.split("=")[0])).equals("")) {
            Glide.with(MainActivity.mContext).load(R.drawable.default_pic).centerCrop().into(viewHolder.imgThumbnail);
        } else {
            file = new File(String.valueOf(path.split("=")[0])); // Load path in file
            Glide.with(MainActivity.mContext).load(file).centerCrop().into(viewHolder.imgThumbnail);
        }
    }

    catch (Exception e) {

    }
}

@Override
public int getItemCount() {
    return mItems.size();
}

public Object getItem(int pos) { return mItems.get(pos); }

class ViewHolder extends RecyclerView.ViewHolder {

    public ImageView imgThumbnail;
    public TextView date, desc;

    public ViewHolder(View itemView) {
        super(itemView);
        imgThumbnail = (ImageView) itemView.findViewById(R.id.thumbnail);
        date = (TextView)itemView.findViewById(R.id.date);
        desc = (TextView)itemView.findViewById(R.id.description);
    }
}
}
公共类日记适配器扩展了RecyclerView.Adapter{ 列出螨类; SQLiteDatabase-mydatabase; 公共日志适配器(){ 超级(); mItems=新的ArrayList(); mItems=MainActivity.diaryinfo; } @凌驾 公共视图持有者onCreateViewHolder(视图组视图组,int i){ 视图v=LayoutInflater.from(viewGroup.getContext()) .充气(R.layout.content_main,视图组,false); 视窗夹持器视窗夹持器=新视窗夹持器(v); mydatabase=(MainActivity.mContext).openOrCreateDatabase(“记住”,android.content.Context.MODE_PRIVATE,null); //在这里更改数据库信息时,在Itemadd的“完成”按钮侦听器上也会更改! execSQL(“创建不存在的表(id VARCHAR主键,path VARCHAR)”; 返回视图持有者; } @凌驾 公共无效onBindViewHolder(ViewHolder ViewHolder,int i){ 试一试{ DiaryInfo info=mItems.get(i); viewHolder.desc.setText(Html.fromHtml((info.getDesc()).replaceAll(“”,“\”)); //将日期修改为可读格式 字符串tempDate=info.getDate(); Locale Locale=(MainActivity.mContext).getResources().getConfiguration().Locale; 字符串[]temp=tempDate.split(“/”;//拆分日期dd/mm/yyyy 整月=整数值(温度[1]); DateFormatSymbols=新的DateFormatSymbols(区域设置); 字符串[]monthNames=symbols.getMonths(); 字符串currentMonth=monthNames[month-1]; viewHolder.date.setText(当前月份+“”+temp[0]); String id=info.getThumbnail(); String path=”“;//缩略图的最终路径 Cursor Cursor=mydatabase.rawQuery(“从内存中选择*,其中id=\'”+id+“\'限制1”,null); if(cursor.moveToFirst()){ while(cursor.isAfterLast()==false){ path=cursor.getString(cursor .getColumnIndex(“路径”); cursor.moveToNext(); 打破 } } cursor.close(); File=null; //从用户单击的图像或默认图像加载图像 if((String.valueOf(path.split(“”[0]))等于(“”){ Glide.with(MainActivity.mContext).load(R.drawable.default_pic.centerCrop())到(viewHolder.imgThumbnail); }否则{ file=新文件(String.valueOf(path.split(“=”[0]);//加载文件中的路径 Glide.with(MainActivity.mContext).load(file.centerCrop())到(viewHolder.imgThumbnail); } } 捕获(例外e){ } } @凌驾 public int getItemCount(){ 返回mItems.size(); } 公共对象getItem(int pos){return mItems.get(pos);} 类ViewHolder扩展了RecyclerView.ViewHolder{ 公共图像查看imgthumbail; 公共文本查看日期,desc; 公共视图持有者(视图项视图){ 超级(项目视图); imgThumbnail=(ImageView)itemView.findViewById(R.id.缩略图); date=(TextView)itemView.findViewById(R.id.date); desc=(TextView)itemView.findViewById(R.id.description); } } } 以下是cardview布局:

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <ImageView
        android:id="@+id/thumbnail"
        android:layout_width="match_parent"
        android:layout_height="150dp"
        android:layout_alignParentTop="true"
        android:scaleType="centerCrop"
        android:src="@drawable/default_pic"/>

    <TextView
        android:id="@+id/date"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/thumbnail"
        android:maxLines="1"
        android:padding="4dp"
        android:text="Title"
        android:textColor="#222"
        android:textStyle="bold"
        android:textSize="22sp"/>

    <TextView
        android:id="@+id/description"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/date"
        android:maxLines="3"
        android:padding="4dp"
        android:text="Description"
        android:textColor="#666"
        android:textSize="14sp"
        android:ellipsize="end"/>

</RelativeLayout>



请帮助!

我认为这是因为您在cardview中的项目具有透明背景。请尝试为其提供背景。或者您可以发布您的cardview xml布局here@firmanslash我已经添加了布局。请您现在检查一下好吗?那么,在您更改cardview背景颜色后,它也会更改textview颜色?我真的不明白您的意思n是的。你能分享一个相同的代码片段吗?对不起,在再次阅读你的问题后,我意识到我误解了你的问题。
它也会改变其他项目的颜色
你是说
项目
也是cardview内部的回收视图吗?