Java getAdapterPosition没有执行它应该执行的操作

Java getAdapterPosition没有执行它应该执行的操作,java,android,filter,android-recyclerview,Java,Android,Filter,Android Recyclerview,我有一个RecyclerView片段,在编辑文本中添加了一个过滤器搜索。它是有效的,但当我点击回收商的卡片时,它进入了错误的细节。我最好的猜测是它从getAdapterPosition中得到了错误的位置,因为假设我有这个列表{a,b,c,d,e,f,g,h}。当我过滤并得到两个像{d,g}一样的itmes时。如果我单击d,它将重定向到a,如果我单击g,它将重定向到b 这是我的回收视图 public class RecyclerProfile extends Fragment implem

我有一个
RecyclerView
片段,在编辑文本中添加了一个过滤器搜索。它是有效的,但当我点击回收商的卡片时,它进入了错误的细节。我最好的猜测是它从
getAdapterPosition
中得到了错误的位置,因为假设我有这个列表{a,b,c,d,e,f,g,h}。当我过滤并得到两个像{d,g}一样的itmes时。如果我单击d,它将重定向到a,如果我单击g,它将重定向到b

这是我的回收视图

    public class RecyclerProfile extends Fragment implements 
Adapter.AdapterListener,  com.example.cake.profiling.Adapter.SearchListener 
{

private RecyclerListener recyclerListener;
private List<Profile> profiles =  (new DAOProfile()).getProfile();
private Adapter recyclerAdapter= new Adapter(profiles, this);

public RecyclerProfile() {
    // Required empty public constructor
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    View view= inflater.inflate(R.layout.fragment_recycler_profile, 
    container, false);

    RecyclerView recyclerView = view.findViewById(R.id.recyclerProfile);


    EditText editText = view.findViewById(R.id.editText);
    editText.addTextChangedListener(new TextWatcher() {
        @Override
        public void beforeTextChanged(CharSequence s, int start, int count, 
        int after) {

        }

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int 
        count) {

        }

        @Override
        public void afterTextChanged(Editable s) {
            filter(s.toString());
        }
    });
    recyclerView.setHasFixedSize(true);

    RecyclerView.LayoutManager layoutManager = new 
    LinearLayoutManager(getContext(), LinearLayoutManager.VERTICAL, false);
    recyclerView.setLayoutManager(layoutManager);


    recyclerView.setAdapter(recyclerAdapter);
    setHasOptionsMenu(true);

    return view;
 }



 private void filter(String text){
    ArrayList<Profile> filteredList = new ArrayList<>();
    for (Profile profile: profiles){
        if (profile.getName().toLowerCase().contains(text.toLowerCase())){
            filteredList.add(profile);
        }
    }
    recyclerAdapter.filterList(filteredList);
    profiles = new ArrayList<>(filteredList);
}

    @Override
    public void listen(Profile profile, Integer position) {
        recyclerListener.send(profile, position);
    }

    @Override
    public void profileSelected(Profile profile) {

    }

    //INTERFACE
    public interface RecyclerListener {
        void send(Profile profile, Integer position);
    }

    //ON ATTACH

    @Override
    public void onAttach(Context context) {
        super.onAttach(context);
        this.recyclerListener = (RecyclerListener) context;
        }
    }
公共类RecyclerProfile扩展了片段实现
Adapter.AdapterListener,com.example.cake.profiling.Adapter.SearchListener
{
私人垃圾回收站;
私有列表配置文件=(新DAOProfile()).getProfile();
专用适配器recyclerAdapter=新适配器(配置文件,此);
公共回收公司(){
//必需的空公共构造函数
}
@凌驾
创建视图上的公共视图(布局、充气机、视图组容器、,
Bundle savedInstanceState){
//为该碎片膨胀布局
视图=充气机。充气(R.layout.fragment\u recycler\u profile,
货柜(虚假);;
RecyclerView RecyclerView=view.findViewById(R.id.recyclerProfile);
EditText EditText=view.findviewbyd(R.id.EditText);
editText.addTextChangedListener(新的TextWatcher(){
@凌驾
更改前的公共无效(字符序列、整数开始、整数计数、,
整数后){
}
@凌驾
public void onTextChanged(字符序列,int start,int before,int
计数){
}
@凌驾
公共无效后文本已更改(可编辑){
过滤器(s.toString());
}
});
recyclerView.setHasFixedSize(true);
RecyclerView.LayoutManager LayoutManager=新建
LinearLayoutManager(getContext(),LinearLayoutManager.VERTICAL,false);
recyclerView.setLayoutManager(layoutManager);
recyclerView.setAdapter(recyclerAdapter);
设置选项菜单(真);
返回视图;
}
专用无效过滤器(字符串文本){
ArrayList filteredList=新建ArrayList();
用于(配置文件:配置文件){
if(profile.getName().toLowerCase().contains(text.toLowerCase())){
filteredList.add(配置文件);
}
}
recyclerAdapter.filterList(过滤器列表);
profiles=newarraylist(filteredList);
}
@凌驾
公共void侦听(配置文件配置文件,整数位置){
recyclerListener.send(配置文件、位置);
}
@凌驾
已选择公共无效配置文件(配置文件){
}
//接口
公共接口回收列表器{
无效发送(配置文件、整数位置);
}
//附加
@凌驾
公共void-onAttach(上下文){
super.onAttach(上下文);
this.recyclerListener=(recyclerListener)上下文;
}
}
这是我的适配器

public class Adapter extends RecyclerView.Adapter<Adapter.ProfileViewHolder> {

private List<Profile> profiles;
private AdapterListener adapterListener;


//CONSTRUCTOR


public Adapter(List<Profile> profiles,AdapterListener adapterListener) {

    this.profiles = profiles;
    this.adapterListener = adapterListener;
}

@NonNull
@Override
public Adapter.ProfileViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
    Context context = parent.getContext();
    LayoutInflater layoutInflater = LayoutInflater.from(context);
    View view = layoutInflater.inflate(R.layout.card_profile, parent, false);
    ProfileViewHolder profileViewHolder = new ProfileViewHolder(view);
    return profileViewHolder;
}

@Override
public void onBindViewHolder(@NonNull Adapter.ProfileViewHolder holder, int position) {
    Profile profile = profiles.get(position);
    holder.setter(profile);
}

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

public void filterList (ArrayList<Profile> filteredList){
    profiles = filteredList;
    notifyDataSetChanged();


}




//VIEWHOLDER
class ProfileViewHolder extends RecyclerView.ViewHolder{

    private ImageView image;
    private TextView name;

    public ProfileViewHolder(View itemView) {
        super(itemView);
        name = itemView.findViewById(R.id.nameProfile);
        image = itemView.findViewById(R.id.imageProfile);
        itemView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                Profile profile = profile.get(getAdapterPosition());
               adapterListener.receive(profile, getAdapterPosition());


            }
        });


    }


    public void setter (Profile profile){
        name.setText(profile.getName());
        image.setImageResource(profile.getImage());
    }
}
public interface AdapterListener {
    void receive(Profile profile, Integer position);
 }
}
公共类适配器扩展了RecyclerView.Adapter{
私人名单简介;
专用适配器列表器适配器列表器;
//建造师
公共适配器(列表配置文件、适配器列表器适配器列表器){
this.profiles=profiles;
this.adapterListener=adapterListener;
}
@非空
@凌驾
public Adapter.ProfileViewHolder onCreateViewHolder(@NonNull ViewGroup父级,int-viewType){
Context=parent.getContext();
LayoutInflater LayoutInflater=LayoutInflater.from(上下文);
视图=布局更平坦。充气(R.layout.card_profile,父项,false);
ProfileViewHolder ProfileViewHolder=新的ProfileViewHolder(视图);
返回视图持有者;
}
@凌驾
public void onBindViewHolder(@NonNull Adapter.ProfileViewHolder holder,int位置){
Profile Profile=profiles.get(位置);
夹持器.设定器(外形);
}
@凌驾
public int getItemCount(){
返回profiles.size();
}
公共无效筛选器列表(ArrayList筛选器列表){
profiles=filteredList;
notifyDataSetChanged();
}
//观众
类ProfileViewHolder扩展了RecyclerView.ViewHolder{
私有图像查看图像;
私有文本视图名称;
公共档案视图持有者(查看项目视图){
超级(项目视图);
name=itemView.findviewbyd(R.id.nameProfile);
image=itemView.findviewbyd(R.id.imageProfile);
itemView.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
Profile=Profile.get(getAdapterPosition());
receive(profile,getAdapterPosition());
}
});
}
公共无效设置器(配置文件){
name.setText(profile.getName());
setImageResource(profile.getImage());
}
}
公共接口适配器列表器{
无效接收(配置文件、整数位置);
}
}
这将返回当前数据集项的位置。这就是我要做的

class ProfileViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {

    private ImageView image;
    private TextView name;

    Profile mProfile;

    public ProfileViewHolder(View itemView) {
        super(itemView);
        name = itemView.findViewById(R.id.nameProfile);
        image = itemView.findViewById(R.id.imageProfile);
        name.setOnClickListener(this);
        image.setOnClickListener(this);
    }


    public void setter (Profile profile){
        if(profile != null) {
            mProfile = profile;
            name.setText(mProfile.getName());
            image.setImageResource(mProfile.getImage());
         }
    }
}

@Override
public void onClick(View view) {
    switch (view.getId()) {
        case R.id.item_nameProfile:
        case R.id.item_imageProfile:
            for(int i = 0 ; i < profiles.size() ; i++) {
                if(profiles.get(i).getName().equalsIgnoreCase(mProfile.getName()) {
                    adapterListener.receive(profiles.get(i), i);
                    break;
                }
            }
            break;
    }
}

public interface AdapterListener {
    void receive(Profile profile, Integer position);
}
}
class ProfileViewHolder扩展了RecyclerView.ViewHolder实现了View.OnClickListener{
私有图像查看图像;
私有文本视图名称;
配置文件;
公共档案视图持有者(查看项目视图){
超级(项目视图);
name=itemView.findviewbyd(R.id.nameProfile);
image=itemView.findviewbyd(R.id.imageProfile);
name.setOnClickListener(this);
image.setOnClickListener(this);
}
公共无效设置器(配置文件){
if(profile!=null){
mProfile=配置文件;
name.setText(mProfile.getName());
setImageResource(mProfile.getImage());
}
}
}
@凌驾
公共void onClick(视图){
开关(view.getId()){
案例R.id.item_名称档案:
案例R.id.item_imageProfile:
对于(int i=0;iclass ProfileViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {

    private ImageView image;
    private TextView name;

    Profile mProfile;

    public ProfileViewHolder(View itemView) {
        super(itemView);
        name = itemView.findViewById(R.id.nameProfile);
        image = itemView.findViewById(R.id.imageProfile);
        name.setOnClickListener(this);
        image.setOnClickListener(this);
    }


    public void setter (Profile profile){
        if(profile != null) {
            mProfile = profile;
            name.setText(mProfile.getName());
            image.setImageResource(mProfile.getImage());
         }
    }
}

@Override
public void onClick(View view) {
    switch (view.getId()) {
        case R.id.item_nameProfile:
        case R.id.item_imageProfile:
            for(int i = 0 ; i < profiles.size() ; i++) {
                if(profiles.get(i).getName().equalsIgnoreCase(mProfile.getName()) {
                    adapterListener.receive(profiles.get(i), i);
                    break;
                }
            }
            break;
    }
}

public interface AdapterListener {
    void receive(Profile profile, Integer position);
}
}