Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/316.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 有效负载显示正确的数据,但DOR不更新arraylist_Java_Android_Arraylist_Android Recyclerview - Fatal编程技术网

Java 有效负载显示正确的数据,但DOR不更新arraylist

Java 有效负载显示正确的数据,但DOR不更新arraylist,java,android,arraylist,android-recyclerview,Java,Android,Arraylist,Android Recyclerview,所以,我在一个recyclerview中有三个条目,我想检查其中一个字段是否唯一(在我的例子中是名称)。所有字段都正确显示在屏幕上,但每当我调用checkValidation时,它总是返回false,即使两个名称不相同。我有一个列表,每当我从活动中调用时,它都会显示一些不同的值,而不是屏幕上的值。如果有什么你没有得到的,请评论 亲爱的社区,我在这里真的需要帮助。 让我知道你真正没有得到的部分….:/ MainActivity.java public MainActivity extend

所以,我在一个recyclerview中有三个条目,我想检查其中一个字段是否唯一(在我的例子中是名称)。所有字段都正确显示在屏幕上,但每当我调用checkValidation时,它总是返回false,即使两个名称不相同。我有一个列表,每当我从活动中调用时,它都会显示一些不同的值,而不是屏幕上的值。如果有什么你没有得到的,请评论

亲爱的社区,我在这里真的需要帮助。 让我知道你真正没有得到的部分….:/ MainActivity.java

    public MainActivity extends AppCompatActivity implements someinterface
..
..
@OnClick(R.id.activity_detailed_proceed)
    void goToOrderPage() {


        if (checkValidation()) {

            startActivity(new Intent(MainActivity.this, Destination.class));
        } else {

            SameNameAlertDialogFragment sameNameAlertDialogFragment = new SameNameAlertDialogFragment();
            sameNameAlertDialogFragment.show(getSupportFragmentManager(), "ERROR DIALOG");

        }


    }

..
..
 boolean checkValidation() {


//        
        ArrayList<PersonFriends> personList = personAdapter.getPersonList();

        ArrayList<String> namesList = new ArrayList<>();
        for (int i = 0; i < personList.size(); i++) {
            namesList.add(personList.get(i).getName());
            System.out.println(personList.get(i).getName());

        }

        boolean corrent = true;



        Set<String> set = new HashSet<String>(namesList);


        if (set.size() < namesList.size()) {
            //duplicates found

            Log.d(TAG, "False was called here");
            return false;
        }


        return true;
    }

 PersonAdapter personAdapter;



@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_detailed_selected_therapy);
        ButterKnife.bind(this);




        ArrayList<PersonFriends> personList = new ArrayList<>();
        personAdapter = new PersonAdapter(this, this);



        personRecyclerview.setAdapter(personAdapter);
        personRecyclerview.setNestedScrollingEnabled(false);
        personRecyclerview.setLayoutManager(new LinearLayoutManager(this));

    }





some interface setup to get the name and duration

@Override
    public void onPersonDetailClicked(int position, View view) {


        if (view.getId() == R.id.person_name) {

            adapterPosition = position;
            EnterPersonDialogFragment enterPersonDialogFragment = new EnterPersonDialogFragment();
            enterPersonDialogFragment.show(getSupportFragmentManager(), "PERSONS SELECTED");

        }

        if (view.getId() == R.id.delete_person) {

            personAdapter.removeItem(position);
//            personAdapter.setPersonList(personList);
//            personAdapter.notifyItemRemoved(position);
        }


        if (view.getId() == R.id.person_duration) {
            adapterPosition = position;
            DurationDialogFragment durationDialogFragment = new DurationDialogFragment();
            durationDialogFragment.show(getSupportFragmentManager(), "DURATION SELECTED");
        }


    }


 @Override
    public void enteredInName(String name) {



        //change the list that is inside the adapter.
        personAdapter.getPersonList().get(adapterPosition).setName(name);
        personAdapter.notifyItemChanged(adapterPosition, PersonAdapter.PAYLOAD_NAME);

    }

    @Override
    public void durationSelectedIs(String duration) {

        personAdapter.getPersonList().get(adapterPosition).setduration(duration);
        personAdapter.notifyItemChanged(adapterPosition, PersonAdapter.PAYLOAD_DURATION);
    }
public class PersonAdapter extends RecyclerView.Adapter<PersonAdapter.PersonViewHolder> {


    public static final String PAYLOAD_NAME = "PAYLOAD_NAME";
    public static final String PAYLOAD_DURATION = "PAYLOAD_DURATION";
    public static final String PAYLOAD_DATE = "PAYLOAD_DATE";


    public static final String TAG = PersonAdapter.class.getSimpleName();
    Context context;
    ArrayList<PersonFriends> personList;
    onPersonItemClicked onPersonItemClicked;

    public PersonAdapter(Context context, onPersonItemClicked personItemClickListener) {

        this.context = context;
        onPersonItemClicked = personItemClickListener;
    }

    public void setPersonList(ArrayList<PersonFriends> personList) {

        this.personList = personList;
        notifyDataSetChanged();
    }


    public ArrayList<PersonFriends> getPersonList() {

        return this.personList;
    }


    public void removeItem(int position) {

        personList.remove(position);
        notifyItemRemoved(position);

    }

    @NonNull
    @Override
    public PersonAdapter.PersonViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {

        LayoutInflater inflater = LayoutInflater.from(context);
        View view = inflater.inflate(R.layout.item_persons_details, parent, false);

        return new PersonViewHolder(view);
    }

    @Override
    public void onBindViewHolder(@NonNull PersonAdapter.PersonViewHolder holder, int position) {

        PersonFriends Person = personList.get(position);
        holder.personName.setText(Person.getName());
        holder.personDate.setText(Person.getDate());
        holder.personDuration.setText(Person.getduration());

        if (position == 0) {
            holder.deleteFab.hide();
        }

    }

    @Override
    public void onBindViewHolder(@NonNull PersonViewHolder holder, int position, @NonNull List<Object> payloads) {

        if (!payloads.isEmpty()) {
            final PersonFriends item = personList.get(position);


            for (final Object payload : payloads) {


                if (payload.equals(PAYLOAD_NAME)) {
                    // in this case only name will be updated
                    holder.personName.setText(item.getName());
                } else if (payload.equals(PAYLOAD_DURATION)) {
                    // only age will be updated
                    holder.personDuration.setText(item.getduration());
                } else if (payload.equals(PAYLOAD_DATE)) {

                    holder.personDate.setText(item.getDate());
                }
            }

        } else {
            // in this case regular onBindViewHolder will be called
            super.onBindViewHolder(holder, position, payloads);
        }


    }

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

    public interface onPersonItemClicked {
        void onPersonDetailClicked(int position, View view);
    }

    class PersonViewHolder extends RecyclerView.ViewHolder {
        private final View.OnClickListener onClickListener = new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                onPersonItemClicked.onPersonDetailClicked(getAdapterPosition(), view);

            }
        };

        @BindView(R.id.person_name)
        TextView personName;
        @BindView(R.id.person_date)
        TextView personDate;
        @BindView(R.id.person_duration)
        TextView personDuration;
        @BindView(R.id.delete_person)
        FloatingActionButton deleteFab;

        public PersonViewHolder(@NonNull View itemView) {
            super(itemView);
            ButterKnife.bind(this, itemView);
            personName.setOnClickListener(onClickListener);
            personDate.setOnClickListener(onClickListener);
            personDuration.setOnClickListener(onClickListener);
            deleteFab.setOnClickListener(onClickListener);


        }
    }
}
public main活动扩展appcompative活动实现了someinterface
..
..
@单击(R.id.activity\u detailed\u Procedue)
void goToOrderPage(){
if(checkValidation()){
startActivity(新意图(MainActivity.this、Destination.class));
}否则{
SameNameAlertDialogFragment SameNameAlertDialogFragment=新SameNameAlertDialogFragment();
显示(getSupportFragmentManager(),“错误对话框”);
}
}
..
..
布尔检查验证(){
//        
ArrayList personList=PersonalAdapter.getPersonList();
ArrayList namesList=新的ArrayList();
对于(int i=0;i
PersonAdapter.java

    public MainActivity extends AppCompatActivity implements someinterface
..
..
@OnClick(R.id.activity_detailed_proceed)
    void goToOrderPage() {


        if (checkValidation()) {

            startActivity(new Intent(MainActivity.this, Destination.class));
        } else {

            SameNameAlertDialogFragment sameNameAlertDialogFragment = new SameNameAlertDialogFragment();
            sameNameAlertDialogFragment.show(getSupportFragmentManager(), "ERROR DIALOG");

        }


    }

..
..
 boolean checkValidation() {


//        
        ArrayList<PersonFriends> personList = personAdapter.getPersonList();

        ArrayList<String> namesList = new ArrayList<>();
        for (int i = 0; i < personList.size(); i++) {
            namesList.add(personList.get(i).getName());
            System.out.println(personList.get(i).getName());

        }

        boolean corrent = true;



        Set<String> set = new HashSet<String>(namesList);


        if (set.size() < namesList.size()) {
            //duplicates found

            Log.d(TAG, "False was called here");
            return false;
        }


        return true;
    }

 PersonAdapter personAdapter;



@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_detailed_selected_therapy);
        ButterKnife.bind(this);




        ArrayList<PersonFriends> personList = new ArrayList<>();
        personAdapter = new PersonAdapter(this, this);



        personRecyclerview.setAdapter(personAdapter);
        personRecyclerview.setNestedScrollingEnabled(false);
        personRecyclerview.setLayoutManager(new LinearLayoutManager(this));

    }





some interface setup to get the name and duration

@Override
    public void onPersonDetailClicked(int position, View view) {


        if (view.getId() == R.id.person_name) {

            adapterPosition = position;
            EnterPersonDialogFragment enterPersonDialogFragment = new EnterPersonDialogFragment();
            enterPersonDialogFragment.show(getSupportFragmentManager(), "PERSONS SELECTED");

        }

        if (view.getId() == R.id.delete_person) {

            personAdapter.removeItem(position);
//            personAdapter.setPersonList(personList);
//            personAdapter.notifyItemRemoved(position);
        }


        if (view.getId() == R.id.person_duration) {
            adapterPosition = position;
            DurationDialogFragment durationDialogFragment = new DurationDialogFragment();
            durationDialogFragment.show(getSupportFragmentManager(), "DURATION SELECTED");
        }


    }


 @Override
    public void enteredInName(String name) {



        //change the list that is inside the adapter.
        personAdapter.getPersonList().get(adapterPosition).setName(name);
        personAdapter.notifyItemChanged(adapterPosition, PersonAdapter.PAYLOAD_NAME);

    }

    @Override
    public void durationSelectedIs(String duration) {

        personAdapter.getPersonList().get(adapterPosition).setduration(duration);
        personAdapter.notifyItemChanged(adapterPosition, PersonAdapter.PAYLOAD_DURATION);
    }
public class PersonAdapter extends RecyclerView.Adapter<PersonAdapter.PersonViewHolder> {


    public static final String PAYLOAD_NAME = "PAYLOAD_NAME";
    public static final String PAYLOAD_DURATION = "PAYLOAD_DURATION";
    public static final String PAYLOAD_DATE = "PAYLOAD_DATE";


    public static final String TAG = PersonAdapter.class.getSimpleName();
    Context context;
    ArrayList<PersonFriends> personList;
    onPersonItemClicked onPersonItemClicked;

    public PersonAdapter(Context context, onPersonItemClicked personItemClickListener) {

        this.context = context;
        onPersonItemClicked = personItemClickListener;
    }

    public void setPersonList(ArrayList<PersonFriends> personList) {

        this.personList = personList;
        notifyDataSetChanged();
    }


    public ArrayList<PersonFriends> getPersonList() {

        return this.personList;
    }


    public void removeItem(int position) {

        personList.remove(position);
        notifyItemRemoved(position);

    }

    @NonNull
    @Override
    public PersonAdapter.PersonViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {

        LayoutInflater inflater = LayoutInflater.from(context);
        View view = inflater.inflate(R.layout.item_persons_details, parent, false);

        return new PersonViewHolder(view);
    }

    @Override
    public void onBindViewHolder(@NonNull PersonAdapter.PersonViewHolder holder, int position) {

        PersonFriends Person = personList.get(position);
        holder.personName.setText(Person.getName());
        holder.personDate.setText(Person.getDate());
        holder.personDuration.setText(Person.getduration());

        if (position == 0) {
            holder.deleteFab.hide();
        }

    }

    @Override
    public void onBindViewHolder(@NonNull PersonViewHolder holder, int position, @NonNull List<Object> payloads) {

        if (!payloads.isEmpty()) {
            final PersonFriends item = personList.get(position);


            for (final Object payload : payloads) {


                if (payload.equals(PAYLOAD_NAME)) {
                    // in this case only name will be updated
                    holder.personName.setText(item.getName());
                } else if (payload.equals(PAYLOAD_DURATION)) {
                    // only age will be updated
                    holder.personDuration.setText(item.getduration());
                } else if (payload.equals(PAYLOAD_DATE)) {

                    holder.personDate.setText(item.getDate());
                }
            }

        } else {
            // in this case regular onBindViewHolder will be called
            super.onBindViewHolder(holder, position, payloads);
        }


    }

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

    public interface onPersonItemClicked {
        void onPersonDetailClicked(int position, View view);
    }

    class PersonViewHolder extends RecyclerView.ViewHolder {
        private final View.OnClickListener onClickListener = new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                onPersonItemClicked.onPersonDetailClicked(getAdapterPosition(), view);

            }
        };

        @BindView(R.id.person_name)
        TextView personName;
        @BindView(R.id.person_date)
        TextView personDate;
        @BindView(R.id.person_duration)
        TextView personDuration;
        @BindView(R.id.delete_person)
        FloatingActionButton deleteFab;

        public PersonViewHolder(@NonNull View itemView) {
            super(itemView);
            ButterKnife.bind(this, itemView);
            personName.setOnClickListener(onClickListener);
            personDate.setOnClickListener(onClickListener);
            personDuration.setOnClickListener(onClickListener);
            deleteFab.setOnClickListener(onClickListener);


        }
    }
}
public类PersonAdapter扩展了RecyclerView.Adapter{
公共静态最终字符串PAYLOAD\u NAME=“PAYLOAD\u NAME”;
公共静态最终字符串PAYLOAD\u DURATION=“PAYLOAD\u DURATION”;
公共静态最终字符串PAYLOAD\u DATE=“PAYLOAD\u DATE”;
公共静态最终字符串标记=PersonAdapter.class.getSimpleName();
语境;
ArrayList个人主义者;
onpersoniemclicked onpersoniemclicked;
公共角色适配器(上下文上下文,onPersonItemClicked PersonitemClicked Listener){
this.context=上下文;
OnPersonitClicked=PersonitClickListener;
}
public void setPersonList(ArrayList personList){
this.personList=personList;
notifyDataSetChanged();
}
公共数组列表getPersonList(){
返回此.personList;
}
公共无效删除项(内部位置){
人员列表。移除(位置);
已移除(位置)的项目;
}
@非空
@凌驾
public PersonalAdapter.PersonViewHolder onCreateViewHolder(@NonNull ViewGroup父级,int-viewType){
LayoutFlater充气机=LayoutFlater.from(上下文);
视图=充气机。充气(R.layout.item\u persons\u details,parent,false);
返回新的PersonViewHolder(视图);
}
@凌驾
public void onBindViewHolder(@NonNull PersonAdapter.PersonViewHolder,int位置){
PersonFriends Person=personList.get(位置);
holder.personName.setText(Person.getName());
holder.personDate.setText(Person.getDate());
holder.personDuration.setText(Person.getduration());
如果(位置==0){
holder.deleteFab.hide();
}
}
@凌驾
public void onBindViewHolder(@NonNull PersonViewHolder holder,int位置,@NonNull列表有效载荷){
如果(!payloads.isEmpty()){
最终PersonFriends项=personList.get(位置);
对于(最终对象有效载荷:有效载荷){
if(有效载荷等于(有效载荷名称)){
//在这种情况下,只更新名称
holder.personName.setText(item.getName());
}else if(有效载荷等于(有效载荷持续时间)){