Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/318.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/219.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
Java 如何基于微调器项目选择在recyclerview中应用过滤器?_Java_Android_Filter_Android Recyclerview_Spinner - Fatal编程技术网

Java 如何基于微调器项目选择在recyclerview中应用过滤器?

Java 如何基于微调器项目选择在recyclerview中应用过滤器?,java,android,filter,android-recyclerview,spinner,Java,Android,Filter,Android Recyclerview,Spinner,您好,我遇到了一种情况,需要根据spinner选择在活动中加载图像。在这里,我将从api中获取这些图像作为ArrayList和微调器值。我不知道如何根据微调器选择应用过滤器。请想出一个解决办法。下面是我的代码 对于活动: public class MedicalRecordsActivity extends BaseActivity implements MedicalRecordsView { @Inject MedicalRecordsPresenter mPresenter; @Bin

您好,我遇到了一种情况,需要根据
spinner
选择在活动中加载图像。在这里,我将从api中获取这些图像作为ArrayList和微调器值。我不知道如何根据微调器选择应用过滤器。请想出一个解决办法。下面是我的代码

对于活动:

public class MedicalRecordsActivity extends BaseActivity implements MedicalRecordsView {

@Inject
MedicalRecordsPresenter mPresenter;

@Bind(R.id.back_img_rl)
RelativeLayout backImage;

@Bind(R.id.tv_toolbartitle)
TextView header;

@Bind(R.id.upload_btn_layout)
RelativeLayout uploadBtnLayout;

@Bind(R.id.spinner_industry)
Spinner categorySpinner;

@Bind(R.id.images_recycler_view)
RecyclerView recyclerView;

List<MemberImageModel> arrayList;
String patientID, imageType, title;
EditText fileName;
ProgressDialog categoryProgress, uploadProgress;

List<String> uploadTypesList;
ArrayAdapter<String> categoryAdapter;
static String selectedSpinnerItem;
File imageProfileFile;

List<ProfileImagesModel> membersList;
MedicalRecordsAdapter dataAdapter = null;

List<String> Prescription = new ArrayList<>();

private static final int RC_CAMERA_PERM = 123;
private static final int RC_GALLERY = 124;
private static final int RC_SETTINGS_SCREEN = 125;
private static final int RC_WRITE_EXTERNAL_STORAGE = 126;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_medical_records);
    ButterKnife.bind(this);
    activityComponent().inject(this);
    mPresenter.attachView(this);

    header.setText("Medical Records");
    uploadBtnLayout.setVisibility(View.VISIBLE);
    patientID = PrefUtils.getPatientID(this);
    categoryProgress = new ProgressDialog(this);
    categoryProgress.setMessage(getString(R.string.loading));

    uploadProgress = new ProgressDialog(this);
    uploadProgress.setMessage(getString(R.string.file_uploading));
}

@Override
public void onResume() {
    super.onResume();
    callGetProfileApi();
    callUploadTypesApi();
}

@Override
public void onBackPressed() {
    finish();
}

@OnClick(R.id.back_img_rl)
public void onBackClicked() {
    finish();
}

@Override
public void getRecordType(UploadTypes response) {
    if (response != null) {
        if (response.isSuccess()) {
            uploadTypesList = new ArrayList<>();
            for (UploadTypes.TypesInfo typesInfo : response.getResponseObject()) {
                uploadTypesList.add(typesInfo.getDocumentname());
            }
            loadSpinner(uploadTypesList);

            categorySpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
                @Override
                public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                    selectedSpinnerItem = uploadTypesList.get(position);
                    dataAdapter.getFilter().filter(selectedSpinnerItem);
                    //callGetProfileApi();
                }

                @Override
                public void onNothingSelected(AdapterView<?> parent) {

                }
            });
        }
    }
}

@Override
public void showCategoryProgress() {
    categoryProgress.show();
}

@Override
public void hideCategoryProgress() {
    categoryProgress.dismiss();
}

@Override
public void showUploadProgress() {
    uploadProgress.show();
}

@Override
public void hideUploadProgress() {
    uploadProgress.dismiss();
}

@Override
public void showProfile(ProfileResponse response) {
    if (response != null) {
        if (response.isSuccess()) {
            membersList = response.getResponseObject().get(0).getImages();
            setAdapter();
        }
    }
}

@Override
public void showProgress() {

}

@Override
public void hideProgress() {

}

@Override
public void showNoInternet() {

}

@Override
public void showNoData() {

}

@Override
public void showError() {

}

private void callUploadTypesApi() {
    mPresenter.getRecordType(ApiConstants.PLATFORM_VAL, patientID, ApiConstants.ROLE_ID_VAL);
}

private void callGetProfileApi() {
    mPresenter.getProfileDetails(patientID);
}

public static String getSelectedItem() {
    return selectedSpinnerItem;
}

private void loadSpinner(List<String> categoryList) {
    categoryAdapter = new ArrayAdapter<>(this, android.R.layout.simple_spinner_item, categoryList);
    categoryAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    categorySpinner.setAdapter(categoryAdapter);
}

private void setAdapter() {
    try {
        RecyclerView.LayoutManager layoutManager = new GridLayoutManager(this, 2);
        recyclerView.setLayoutManager(layoutManager);
        MedicalRecordsAdapter dataAdapter = new MedicalRecordsAdapter(this, membersList);
        recyclerView.setAdapter(dataAdapter);
       /* dataAdapter.getFilter().filter(selectedSpinnerItem);
        dataAdapter.notifyDataSetChanged();*/
    } catch (Exception e) {
        e.printStackTrace();
    }
}}
public class MedicalRecordsAdapter extends RecyclerView.Adapter<MedicalRecordsAdapter.ViewHolder> implements Filterable {

Context context;
List<ProfileImagesModel> membersList, filterList;
//CustomFilter filter;

public MedicalRecordsAdapter(Context context, List<ProfileImagesModel> membersList) {
    this.context = context;
    this.membersList = membersList;
    this.filterList = membersList;
}

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

@Override
public void onBindViewHolder(MedicalRecordsAdapter.ViewHolder holder, int position) {
    holder.recordName.setText(filterList.get(position).getTitle());
    holder.recordDate.setText(filterList.get(position).getCreateddate());
    String thumbnail = filterList.get(position).getImagepath();
    Glide.with(context)
            .load(ApiEndpoint.IMAGE_URL + thumbnail)
            .into(holder.thumbnail);
}

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

@Override
public Filter getFilter() {
    /*if (filter == null) {
        filter = new CustomFilter(filterList, this);
    }
    return filter;*/
    return new Filter() {
        @Override
        protected FilterResults performFiltering(CharSequence constraint) {
            String charString = constraint.toString();

            if (charString.isEmpty()) {

                filterList = membersList;
            } else {

                List<ProfileImagesModel> filteredList = new ArrayList<>();

                for (ProfileImagesModel androidVersion : membersList) {

                    if (androidVersion.getType().contains(charString) /*|| androidVersion.getName().toLowerCase().contains(charString) || androidVersion.getVer().toLowerCase().contains(charString)*/) {

                        filteredList.add(androidVersion);
                    }
                }

                filterList = filteredList;
            }

            FilterResults filterResults = new FilterResults();
            filterResults.values = filterList;
            return filterResults;
        }

        @Override
        protected void publishResults(CharSequence constraint, FilterResults results) {
            filterList = (List<ProfileImagesModel>) results.values;
            notifyDataSetChanged();
        }
    };
}

public class ViewHolder extends RecyclerView.ViewHolder {

    private TextView recordName;
    private TextView recordDate;
    private ImageView thumbnail;

    public ViewHolder(View itemView) {
        super(itemView);
        recordName = (TextView) itemView.findViewById(R.id.small_card_record);
        recordDate = (TextView) itemView.findViewById(R.id.small_card_date);
        thumbnail = (ImageView) itemView.findViewById(R.id.imageview_small_card_thumbnail);
    }
}}
公共类MedicalRecordsActivity扩展BaseActivity实现MedicalRecordsView{
@注入
医学报告中心;
@绑定(R.id.back\u img\u rl)
相对背景图像;
@绑定(R.id.tv\u工具栏标题)
文本视图标题;
@绑定(R.id.upload\u btn\u布局)
相对上传布局;
@绑定(R.id.spinner\u行业)
纺纱机分类纺纱机;
@绑定(R.id.images\u recycler\u视图)
回收视图回收视图;
列表数组列表;
字符串patientID,imageType,title;
编辑文本文件名;
ProgressDialog类别进程,上载进程;
列表上传类型列表;
阵列适配器类别适配器;
静态字符串selectedSpinnerItem;
文件ImageProfile文件;
名单成员名单;
MedicalRecordsAdapter dataAdapter=null;
列表处方=新建ArrayList();
专用静态最终int RC_CAMERA_PERM=123;
私人静态最终内部RC_画廊=124;
专用静态最终内部RC_设置_屏幕=125;
专用静态最终int RC_WRITE_EXTERNAL_STORAGE=126;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u medical\u records);
把(这个)绑起来;
activityComponent().inject(此);
mPresenter.attachView(本);
header.setText(“医疗记录”);
上传btnlayout.setVisibility(View.VISIBLE);
patientID=PrefUtils.getPatientID(this);
categoryProgress=新建进度对话框(此对话框);
setMessage(getString(R.string.loading));
uploadProgress=新建ProgressDialog(此对话框);
setMessage(getString(R.string.file_upload));
}
@凌驾
恢复时公开作废(){
super.onResume();
callGetProfileApi();
callUploadTypesApi();
}
@凌驾
public void onBackPressed(){
完成();
}
@OnClick(R.id.back\u img\u rl)
public void onBackClicked(){
完成();
}
@凌驾
public void getRecordType(UploadTypes响应){
if(响应!=null){
if(response.issucess()){
uploadTypesList=新的ArrayList();
对于(UploadTypes.TypesInfo-TypesInfo:response.getResponseObject()){
uploadTypesList.add(typesInfo.getDocumentname());
}
loadSpinner(上传类型列表);
categorySpinner.setOnItemSelectedListener(新的AdapterView.OnItemSelectedListener(){
@凌驾
已选择公共视图(AdapterView父视图、视图视图、整型位置、长id){
selectedSpinnerItem=uploadTypesList.get(位置);
dataAdapter.getFilter().filter(selectedSpinnerItem);
//callGetProfileApi();
}
@凌驾
未选择公共无效(AdapterView父级){
}
});
}
}
}
@凌驾
公开作废showCategoryProgress(){
categoryProgress.show();
}
@凌驾
public void hidecategory progress(){
categoryProgress.Disclose();
}
@凌驾
public void showUploadProgress(){
uploadProgress.show();
}
@凌驾
公共无效hideUploadProgress(){
uploadProgress.disclose();
}
@凌驾
公共无效显示配置文件(配置文件响应){
if(响应!=null){
if(response.issucess()){
membersList=response.getResponseObject().get(0.getImages();
setAdapter();
}
}
}
@凌驾
公共服务进展{
}
@凌驾
public void hideProgress(){
}
@凌驾
公共void showNoInternet(){
}
@凌驾
公共无效showNoData(){
}
@凌驾
公共图书馆(ROR){
}
私有类型SAPI(){
mPresenter.getRecordType(ApiConstants.PLATFORM\u VAL、patientID、ApiConstants.ROLE\u ID\u VAL);
}
私有void callGetProfileApi(){
mPresenter.getProfileDetails(patientID);
}
公共静态字符串getSelectedItem(){
返回所选喷丝头项目;
}
专用void loadSpinner(列表类别列表){
categoryAdapter=新的ArrayAdapter(这是android.R.layout.simple\u微调器\u项,categoryList);
categoryAdapter.setDropDownViewResource(android.R.layout.simple\u微调器\u下拉菜单\u项);
categorySpinner.setAdapter(categoryAdapter);
}
私有void setAdapter(){
试一试{
RecyclerView.LayoutManager LayoutManager=新的GridLayoutManager(这个,2);
recyclerView.setLayoutManager(layoutManager);
MedicalRecordsAdapter dataAdapter=新MedicalRecordsAdapter(此,成员列表);
recyclerView.setAdapter(dataAdapter);
/*dataAdapter.getFilter().filter(selectedSpinnerItem);
dataAdapter.notifyDataSetChanged()*/
}捕获(例外e){
e、 printStackTrace();
}
}}
对于适配器:

public class MedicalRecordsActivity extends BaseActivity implements MedicalRecordsView {

@Inject
MedicalRecordsPresenter mPresenter;

@Bind(R.id.back_img_rl)
RelativeLayout backImage;

@Bind(R.id.tv_toolbartitle)
TextView header;

@Bind(R.id.upload_btn_layout)
RelativeLayout uploadBtnLayout;

@Bind(R.id.spinner_industry)
Spinner categorySpinner;

@Bind(R.id.images_recycler_view)
RecyclerView recyclerView;

List<MemberImageModel> arrayList;
String patientID, imageType, title;
EditText fileName;
ProgressDialog categoryProgress, uploadProgress;

List<String> uploadTypesList;
ArrayAdapter<String> categoryAdapter;
static String selectedSpinnerItem;
File imageProfileFile;

List<ProfileImagesModel> membersList;
MedicalRecordsAdapter dataAdapter = null;

List<String> Prescription = new ArrayList<>();

private static final int RC_CAMERA_PERM = 123;
private static final int RC_GALLERY = 124;
private static final int RC_SETTINGS_SCREEN = 125;
private static final int RC_WRITE_EXTERNAL_STORAGE = 126;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_medical_records);
    ButterKnife.bind(this);
    activityComponent().inject(this);
    mPresenter.attachView(this);

    header.setText("Medical Records");
    uploadBtnLayout.setVisibility(View.VISIBLE);
    patientID = PrefUtils.getPatientID(this);
    categoryProgress = new ProgressDialog(this);
    categoryProgress.setMessage(getString(R.string.loading));

    uploadProgress = new ProgressDialog(this);
    uploadProgress.setMessage(getString(R.string.file_uploading));
}

@Override
public void onResume() {
    super.onResume();
    callGetProfileApi();
    callUploadTypesApi();
}

@Override
public void onBackPressed() {
    finish();
}

@OnClick(R.id.back_img_rl)
public void onBackClicked() {
    finish();
}

@Override
public void getRecordType(UploadTypes response) {
    if (response != null) {
        if (response.isSuccess()) {
            uploadTypesList = new ArrayList<>();
            for (UploadTypes.TypesInfo typesInfo : response.getResponseObject()) {
                uploadTypesList.add(typesInfo.getDocumentname());
            }
            loadSpinner(uploadTypesList);

            categorySpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
                @Override
                public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                    selectedSpinnerItem = uploadTypesList.get(position);
                    dataAdapter.getFilter().filter(selectedSpinnerItem);
                    //callGetProfileApi();
                }

                @Override
                public void onNothingSelected(AdapterView<?> parent) {

                }
            });
        }
    }
}

@Override
public void showCategoryProgress() {
    categoryProgress.show();
}

@Override
public void hideCategoryProgress() {
    categoryProgress.dismiss();
}

@Override
public void showUploadProgress() {
    uploadProgress.show();
}

@Override
public void hideUploadProgress() {
    uploadProgress.dismiss();
}

@Override
public void showProfile(ProfileResponse response) {
    if (response != null) {
        if (response.isSuccess()) {
            membersList = response.getResponseObject().get(0).getImages();
            setAdapter();
        }
    }
}

@Override
public void showProgress() {

}

@Override
public void hideProgress() {

}

@Override
public void showNoInternet() {

}

@Override
public void showNoData() {

}

@Override
public void showError() {

}

private void callUploadTypesApi() {
    mPresenter.getRecordType(ApiConstants.PLATFORM_VAL, patientID, ApiConstants.ROLE_ID_VAL);
}

private void callGetProfileApi() {
    mPresenter.getProfileDetails(patientID);
}

public static String getSelectedItem() {
    return selectedSpinnerItem;
}

private void loadSpinner(List<String> categoryList) {
    categoryAdapter = new ArrayAdapter<>(this, android.R.layout.simple_spinner_item, categoryList);
    categoryAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    categorySpinner.setAdapter(categoryAdapter);
}

private void setAdapter() {
    try {
        RecyclerView.LayoutManager layoutManager = new GridLayoutManager(this, 2);
        recyclerView.setLayoutManager(layoutManager);
        MedicalRecordsAdapter dataAdapter = new MedicalRecordsAdapter(this, membersList);
        recyclerView.setAdapter(dataAdapter);
       /* dataAdapter.getFilter().filter(selectedSpinnerItem);
        dataAdapter.notifyDataSetChanged();*/
    } catch (Exception e) {
        e.printStackTrace();
    }
}}
public class MedicalRecordsAdapter extends RecyclerView.Adapter<MedicalRecordsAdapter.ViewHolder> implements Filterable {

Context context;
List<ProfileImagesModel> membersList, filterList;
//CustomFilter filter;

public MedicalRecordsAdapter(Context context, List<ProfileImagesModel> membersList) {
    this.context = context;
    this.membersList = membersList;
    this.filterList = membersList;
}

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

@Override
public void onBindViewHolder(MedicalRecordsAdapter.ViewHolder holder, int position) {
    holder.recordName.setText(filterList.get(position).getTitle());
    holder.recordDate.setText(filterList.get(position).getCreateddate());
    String thumbnail = filterList.get(position).getImagepath();
    Glide.with(context)
            .load(ApiEndpoint.IMAGE_URL + thumbnail)
            .into(holder.thumbnail);
}

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

@Override
public Filter getFilter() {
    /*if (filter == null) {
        filter = new CustomFilter(filterList, this);
    }
    return filter;*/
    return new Filter() {
        @Override
        protected FilterResults performFiltering(CharSequence constraint) {
            String charString = constraint.toString();

            if (charString.isEmpty()) {

                filterList = membersList;
            } else {

                List<ProfileImagesModel> filteredList = new ArrayList<>();

                for (ProfileImagesModel androidVersion : membersList) {

                    if (androidVersion.getType().contains(charString) /*|| androidVersion.getName().toLowerCase().contains(charString) || androidVersion.getVer().toLowerCase().contains(charString)*/) {

                        filteredList.add(androidVersion);
                    }
                }

                filterList = filteredList;
            }

            FilterResults filterResults = new FilterResults();
            filterResults.values = filterList;
            return filterResults;
        }

        @Override
        protected void publishResults(CharSequence constraint, FilterResults results) {
            filterList = (List<ProfileImagesModel>) results.values;
            notifyDataSetChanged();
        }
    };
}

public class ViewHolder extends RecyclerView.ViewHolder {

    private TextView recordName;
    private TextView recordDate;
    private ImageView thumbnail;

    public ViewHolder(View itemView) {
        super(itemView);
        recordName = (TextView) itemView.findViewById(R.id.small_card_record);
        recordDate = (TextView) itemView.findViewById(R.id.small_card_date);
        thumbnail = (ImageView) itemView.findViewById(R.id.imageview_small_card_thumbnail);
    }
}}
公共类MedicalRecordsAdapter扩展了RecyclerView。适配器实现可过滤{
语境;
列表成员列表、过滤器列表;
//自定义过滤器;
公共医疗记录适配器(上下文,列表成员列表){
this.context=上下文;
this.membersList=成员列表;
this.filterList=成员列表;
}
@凌驾
public MedicalRecordsAdapter.ViewHolder onCreateViewHolder(视图组父级,int-viewType){
View View=LayoutInflater.from(parent.getContext()).flate(R.layout.adapter\u patient\u record,parent,false);
返回新的MedicalRecordsAdapter.ViewHolder(视图);
}
@凌驾
BindViewHolder上的公共无效(MedicalRecordsAdapter.ViewHolder,内部位置){
holder.recordName.setText(filterList.get(position.getTitle());
holder.recordDate.setText(filterList.get(position.getCreateddate());
字符串缩略图=filterList.get(position.getImagepath();
带(上下文)滑动
.load(apidentpoint.IMAGE\u URL+缩略图)