Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/225.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 使用“警报”对话框更改Reyclerview布局_Android_Android Layout_Android Recyclerview_Android Adapter_Android Gridlayout - Fatal编程技术网

Android 使用“警报”对话框更改Reyclerview布局

Android 使用“警报”对话框更改Reyclerview布局,android,android-layout,android-recyclerview,android-adapter,android-gridlayout,Android,Android Layout,Android Recyclerview,Android Adapter,Android Gridlayout,我有一个应用程序在列表布局中已经有一个RecyclerView。此RecylcerView还具有从alertDialog调用的各种筛选器。我希望能够从这个alertDialog更改RecyclerView的布局 我已经更新了对话框_layout.xml以包含按钮,并更新了main活动创建了两个布尔变量liststate和gridstate,这两个变量由新按钮触发的两个onclicklistener更新。(我知道它们不需要是布尔值,但我将它们用于其他按钮,因此处理装饰,因此我认为我也会在这里使用它

我有一个应用程序在列表布局中已经有一个RecyclerView。此RecylcerView还具有从alertDialog调用的各种筛选器。我希望能够从这个alertDialog更改RecyclerView的布局

我已经更新了
对话框_layout.xml
以包含按钮,并更新了
main活动
创建了两个布尔变量
liststate
gridstate
,这两个变量由新按钮触发的两个onclicklistener更新。(我知道它们不需要是布尔值,但我将它们用于其他按钮,因此处理装饰,因此我认为我也会在这里使用它们)

我已经创建了一个
layout\u listitem\u grid.xml
,与原来的类似,但不是正方形

<androidx.cardview.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:app="http://schemas.android.com/apk/res-auto"
  android:layout_width="150dp"
  android:layout_height="150dp"
  app:cardElevation="10dp"
  app:cardUseCompatPadding="true">

  <RelativeLayout
      android:id="@+id/parent_layout"
      android:layout_width="match_parent"
      android:layout_height="wrap_content"
      android:layout_marginLeft="@dimen/margin_card_left_right"
      android:layout_marginRight="@dimen/margin_card_left_right"
      android:layout_marginBottom="@dimen/margin_card"
      android:background="@drawable/ripple"
      android:clickable="true"
      android:paddingLeft="@dimen/activity_margin_left"
      android:paddingTop="@dimen/row_padding"
      android:paddingRight="@dimen/activity_margin"
      android:paddingBottom="@dimen/row_padding">


      <ImageView
          android:id="@+id/grid"
          android:layout_width="match_parent"
          android:layout_height="150dp"
          android:adjustViewBounds="true"
          android:contentDescription="@string/app_name"
          android:scaleType="centerCrop" />

      <TextView
          android:id="@+id/image_name"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:layout_centerInParent="true"
          android:layout_marginLeft="@dimen/activity_margin"
          android:layout_toRightOf="@+id/image"
          android:fontFamily="@font/baloo"
          android:text="text"
          android:textSize="@dimen/heading" />
  </RelativeLayout>
</androidx.cardview.widget.CardView>
我需要如何更改
RecycleServiceAdapter
,我正在寻找最简单的方法,我知道我必须更新支架等,但我也希望过滤器在使用后仍能正常工作,迄今为止我所做的每一种方法都会破坏它们

我知道我的代码可能不美观,也不传统,但目前它仍在工作,所以我希望保持这种状态是可能的

package com.british.sheep.breeds;
import android.content.Context;
import android.content.Intent;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Filter;
import android.widget.Filterable;
import android.widget.ImageView;
import android.widget.RelativeLayout;
import android.widget.TextView;
import androidx.recyclerview.widget.RecyclerView;
import com.bumptech.glide.Glide;
import java.util.ArrayList;
import java.util.List;

public class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerViewAdapter.ViewHolder> implements Filterable {
    private static final String TAG = "RecyclerViewAdapter";
    ArrayList<Images> filteredList;
    ArrayList<Images> imagesArrayList;
    ArrayList<Images> imagesArrayListFull;
    private Context mContext;

    public RecyclerViewAdapter(Context context, ArrayList<Images> imagesArrayList) {
        mContext = context;
        this.imagesArrayList = imagesArrayList;
        imagesArrayListFull = new ArrayList<>(imagesArrayList);
    }

    Filter filter = new Filter() {
        @Override
        protected FilterResults performFiltering(CharSequence constraint) {
            filteredList = new ArrayList<>();
            if (constraint == null || constraint.length() == 0) {
                filteredList.addAll(imagesArrayListFull);
            } else {
                String filterPattern = constraint.toString().toLowerCase().trim();
                for (Images item : imagesArrayListFull) {

                    if (item.getmImageNames().toLowerCase().contains(filterPattern)) {
                        filteredList.add(item);

                    }

                }
            }
            FilterResults results = new FilterResults();
            results.values = filteredList;
            return results;
        }

        @Override
        protected void publishResults(CharSequence constraint, FilterResults results) {
            imagesArrayList.clear();
            imagesArrayList.addAll((List) results.values);
            notifyDataSetChanged();
        }
    };

    @Override
    public Filter getFilter() {
        return filter;
    }

    @Override
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.layout_listitem, parent, false);
        ViewHolder holder = new ViewHolder(view);
        return holder;
    }

    @Override
    public void onBindViewHolder(final ViewHolder holder, final int position) {
        String icon = imagesArrayList.get(position).getmImages();

        int resid = this.mContext.getResources().getIdentifier(icon, "drawable", mContext.getApplicationContext().getPackageName());

        Glide.with(mContext)
                .asBitmap()
                .load(resid)
                .into(holder.image);

        holder.imageName.setText(imagesArrayList.get(position).getmImageNames());

        holder.parentLayout.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                if (filteredList != null) {
                    int pos = holder.getAdapterPosition();

                    Images image = filteredList.get(pos);

                    for (int i = 0; i < imagesArrayListFull.size(); i++) {

                        if (image.getmImageNames().equals(imagesArrayListFull.get(i).getmImageNames())) {
                            pos = i;
                            break;
                        }
                    }

                    Intent intent = new Intent(mContext, GalleryActivity.class);

                    Images images = new Images(imagesArrayListFull.get(pos).getmImageNames()
                            , imagesArrayListFull.get(pos).getmImages()
                            , imagesArrayListFull.get(pos).getmImageTypes()
                            , imagesArrayListFull.get(pos).getmImageEstablisheds()
                            , imagesArrayListFull.get(pos).getmImageHandles()
                            , imagesArrayListFull.get(pos).getmImageColours()
                            , imagesArrayListFull.get(pos).getmImageFleeces()
                            , imagesArrayListFull.get(pos).getmImageStaples()
                            , imagesArrayListFull.get(pos).getmImageMicrons()
                            , imagesArrayListFull.get(pos).getmImageGallerys());

                    intent.putExtra("Images", images);

                    mContext.startActivity(intent);
                } else {

                    Intent intent = new Intent(mContext, GalleryActivity.class);

                    Images images = new Images(imagesArrayListFull.get(position).getmImageNames()
                            , imagesArrayListFull.get(position).getmImages(),
                            imagesArrayListFull.get(position).getmImageTypes()
                            , imagesArrayListFull.get(position).getmImageEstablisheds()
                            , imagesArrayListFull.get(position).getmImageHandles()
                            , imagesArrayListFull.get(position).getmImageColours()
                            , imagesArrayListFull.get(position).getmImageFleeces()
                            , imagesArrayListFull.get(position).getmImageStaples()
                            , imagesArrayListFull.get(position).getmImageMicrons()
                            , imagesArrayListFull.get(position).getmImageGallerys());
                    intent.putExtra("Images", images);

                    mContext.startActivity(intent);
                }

            }
        });
    }

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

    public class ViewHolder extends RecyclerView.ViewHolder {

        ImageView image;
        TextView imageName;
        TextView imageType;
        TextView imageEstablished;
        TextView imageHandle;
        TextView imageColour;
        TextView imageFleece;
        TextView imageStaple;
        TextView imageMicron;
        ImageView imageGallery;
        RelativeLayout parentLayout;

        public ViewHolder(View itemView) {
            super(itemView);
            image = itemView.findViewById(R.id.image);
            imageName = itemView.findViewById(R.id.image_name);
            parentLayout = itemView.findViewById(R.id.parent_layout);
            imageType = itemView.findViewById(R.id.image_type);
            imageEstablished = itemView.findViewById(R.id.image_established);
            imageHandle = itemView.findViewById(R.id.image_handle);
            imageColour = itemView.findViewById(R.id.image_colour);
            imageFleece = itemView.findViewById(R.id.image_fleece);
            imageStaple = itemView.findViewById(R.id.image_staple);
            imageMicron = itemView.findViewById(R.id.image_micron);
            imageGallery = itemView.findViewById(R.id.image_gallery);


        }

    }


}
package com.british.sheep.brides;
导入android.content.Context;
导入android.content.Intent;
导入android.view.LayoutInflater;
导入android.view.view;
导入android.view.ViewGroup;
导入android.widget.Filter;
导入android.widget.Filterable;
导入android.widget.ImageView;
导入android.widget.RelativeLayout;
导入android.widget.TextView;
导入androidx.recyclerview.widget.recyclerview;
导入com.bumptech.glide.glide;
导入java.util.ArrayList;
导入java.util.List;
公共类RecycleServiceAdapter扩展了RecyclerView。适配器实现可筛选{
私有静态最终字符串TAG=“RecycleServiceAdapter”;
ArrayList filteredList;
阵列列表图像阵列列表;
ArrayList imagesArrayListFull;
私有上下文;
公共RecycleServiceAdapter(上下文上下文,ArrayList imagesArrayList){
mContext=上下文;
this.imagesArrayList=imagesArrayList;
imagesArrayListFull=新阵列列表(imagesArrayList);
}
过滤器过滤器=新过滤器(){
@凌驾
受保护的筛选器结果性能筛选(CharSequence约束){
filteredList=新建ArrayList();
if(constraint==null | | constraint.length()==0){
filteredList.addAll(imagesArrayListFull);
}否则{
String filterPattern=constraint.toString().toLowerCase().trim();
对于(图像项:imagesArrayListFull){
if(item.getmImageNames().toLowerCase().contains(filterPattern)){
filteredList.add(项目);
}
}
}
FilterResults results=新的FilterResults();
results.values=filteredList;
返回结果;
}
@凌驾
受保护的void publishResults(CharSequence约束、FilterResults结果){
imagesArrayList.clear();
imagesArrayList.addAll((List)results.values);
notifyDataSetChanged();
}
};
@凌驾
公共过滤器getFilter(){
回流过滤器;
}
@凌驾
public ViewHolder onCreateViewHolder(视图组父级,int-viewType){
View View=LayoutInflater.from(parent.getContext()).flate(R.layout.layout\u listitem,parent,false);
ViewHolder=新的ViewHolder(视图);
报税表持有人;
}
@凌驾
公共无效onBindViewHolder(最终视图持有人,最终整型位置){
String icon=imagesArrayList.get(position.getmImages();
int resid=this.mContext.getResources().getIdentifier(图标“可绘制”,mContext.getApplicationContext().getPackageName());
使用(mContext)滑动
.asBitmap()
.负载(剩余)
.插入(支架图像);
holder.imageName.setText(imagesArrayList.get(position.getmImageNames());
holder.parentLayout.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
如果(filteredList!=null){
int pos=holder.getAdapterPosition();
Images image=filteredList.get(pos);
对于(int i=0;ipackage com.british.sheep.breeds;
import android.content.Context;
import android.content.Intent;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Filter;
import android.widget.Filterable;
import android.widget.ImageView;
import android.widget.RelativeLayout;
import android.widget.TextView;
import androidx.recyclerview.widget.RecyclerView;
import com.bumptech.glide.Glide;
import java.util.ArrayList;
import java.util.List;

public class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerViewAdapter.ViewHolder> implements Filterable {
    private static final String TAG = "RecyclerViewAdapter";
    ArrayList<Images> filteredList;
    ArrayList<Images> imagesArrayList;
    ArrayList<Images> imagesArrayListFull;
    private Context mContext;

    public RecyclerViewAdapter(Context context, ArrayList<Images> imagesArrayList) {
        mContext = context;
        this.imagesArrayList = imagesArrayList;
        imagesArrayListFull = new ArrayList<>(imagesArrayList);
    }

    Filter filter = new Filter() {
        @Override
        protected FilterResults performFiltering(CharSequence constraint) {
            filteredList = new ArrayList<>();
            if (constraint == null || constraint.length() == 0) {
                filteredList.addAll(imagesArrayListFull);
            } else {
                String filterPattern = constraint.toString().toLowerCase().trim();
                for (Images item : imagesArrayListFull) {

                    if (item.getmImageNames().toLowerCase().contains(filterPattern)) {
                        filteredList.add(item);

                    }

                }
            }
            FilterResults results = new FilterResults();
            results.values = filteredList;
            return results;
        }

        @Override
        protected void publishResults(CharSequence constraint, FilterResults results) {
            imagesArrayList.clear();
            imagesArrayList.addAll((List) results.values);
            notifyDataSetChanged();
        }
    };

    @Override
    public Filter getFilter() {
        return filter;
    }

    @Override
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.layout_listitem, parent, false);
        ViewHolder holder = new ViewHolder(view);
        return holder;
    }

    @Override
    public void onBindViewHolder(final ViewHolder holder, final int position) {
        String icon = imagesArrayList.get(position).getmImages();

        int resid = this.mContext.getResources().getIdentifier(icon, "drawable", mContext.getApplicationContext().getPackageName());

        Glide.with(mContext)
                .asBitmap()
                .load(resid)
                .into(holder.image);

        holder.imageName.setText(imagesArrayList.get(position).getmImageNames());

        holder.parentLayout.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                if (filteredList != null) {
                    int pos = holder.getAdapterPosition();

                    Images image = filteredList.get(pos);

                    for (int i = 0; i < imagesArrayListFull.size(); i++) {

                        if (image.getmImageNames().equals(imagesArrayListFull.get(i).getmImageNames())) {
                            pos = i;
                            break;
                        }
                    }

                    Intent intent = new Intent(mContext, GalleryActivity.class);

                    Images images = new Images(imagesArrayListFull.get(pos).getmImageNames()
                            , imagesArrayListFull.get(pos).getmImages()
                            , imagesArrayListFull.get(pos).getmImageTypes()
                            , imagesArrayListFull.get(pos).getmImageEstablisheds()
                            , imagesArrayListFull.get(pos).getmImageHandles()
                            , imagesArrayListFull.get(pos).getmImageColours()
                            , imagesArrayListFull.get(pos).getmImageFleeces()
                            , imagesArrayListFull.get(pos).getmImageStaples()
                            , imagesArrayListFull.get(pos).getmImageMicrons()
                            , imagesArrayListFull.get(pos).getmImageGallerys());

                    intent.putExtra("Images", images);

                    mContext.startActivity(intent);
                } else {

                    Intent intent = new Intent(mContext, GalleryActivity.class);

                    Images images = new Images(imagesArrayListFull.get(position).getmImageNames()
                            , imagesArrayListFull.get(position).getmImages(),
                            imagesArrayListFull.get(position).getmImageTypes()
                            , imagesArrayListFull.get(position).getmImageEstablisheds()
                            , imagesArrayListFull.get(position).getmImageHandles()
                            , imagesArrayListFull.get(position).getmImageColours()
                            , imagesArrayListFull.get(position).getmImageFleeces()
                            , imagesArrayListFull.get(position).getmImageStaples()
                            , imagesArrayListFull.get(position).getmImageMicrons()
                            , imagesArrayListFull.get(position).getmImageGallerys());
                    intent.putExtra("Images", images);

                    mContext.startActivity(intent);
                }

            }
        });
    }

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

    public class ViewHolder extends RecyclerView.ViewHolder {

        ImageView image;
        TextView imageName;
        TextView imageType;
        TextView imageEstablished;
        TextView imageHandle;
        TextView imageColour;
        TextView imageFleece;
        TextView imageStaple;
        TextView imageMicron;
        ImageView imageGallery;
        RelativeLayout parentLayout;

        public ViewHolder(View itemView) {
            super(itemView);
            image = itemView.findViewById(R.id.image);
            imageName = itemView.findViewById(R.id.image_name);
            parentLayout = itemView.findViewById(R.id.parent_layout);
            imageType = itemView.findViewById(R.id.image_type);
            imageEstablished = itemView.findViewById(R.id.image_established);
            imageHandle = itemView.findViewById(R.id.image_handle);
            imageColour = itemView.findViewById(R.id.image_colour);
            imageFleece = itemView.findViewById(R.id.image_fleece);
            imageStaple = itemView.findViewById(R.id.image_staple);
            imageMicron = itemView.findViewById(R.id.image_micron);
            imageGallery = itemView.findViewById(R.id.image_gallery);


        }

    }


}