Android 选择cardview inside recyclerview也会选择其他项目
当我更改recyclerview中的cardview的颜色时,它也会更改其他项目的颜色。我怎样才能解决这个问题 下面是我正在更改背景颜色的模块部分: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
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内部的回收视图吗?