Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/211.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 rView.ViewHolder实现View.OnClickListener{ 私有TextView textViewSetNumber; 私有文本视图文本视图权重; 私有文本视图文本视图代表; OnExerciseClickListener mOnExerciseClickListener; 私人亲戚; public ViewHolderTwo(@NonNull View itemView,OnExerciseClickListener OnExerciseClickListener){ 超级(项目视图); textViewSetNumber=itemView.findViewById(R.id.textView\u Set\u Number); textViewWeight=itemView.findViewById(R.id.textView\u-weight); textViewReps=itemView.findViewById(R.id.textView\u repss); relativeLayout=(relativeLayout)itemView.findViewById(R.id.exercise\u item\u rel); mOnExerciseClickListener=onExerciseClickListener; setOnClickListener(这个); } @凌驾 公共void onClick(视图v){ onExerciseClickListener.onExerciseClicked(getAdapterPosition()); 如果(!标志){ adapterPos=getAdapterPosition(); flag=true; }否则{ adapterPos=-1; flag=false; } notifyDataSetChanged(); } } 公共接口OnExerciseClickListener{ void onexercise(int位置); } 公共双getWeight(内部位置){ 双倍重量=所有完成的练习。获取(位置)。获取总重量提升(); 返回重量; } 公共int getReps(int职位){ int reps=allCompletedExercises.get(position.getReps(); 返回代表; } }_Java_Android_Android Recyclerview_Android Swipe - Fatal编程技术网

Java rView.ViewHolder实现View.OnClickListener{ 私有TextView textViewSetNumber; 私有文本视图文本视图权重; 私有文本视图文本视图代表; OnExerciseClickListener mOnExerciseClickListener; 私人亲戚; public ViewHolderTwo(@NonNull View itemView,OnExerciseClickListener OnExerciseClickListener){ 超级(项目视图); textViewSetNumber=itemView.findViewById(R.id.textView\u Set\u Number); textViewWeight=itemView.findViewById(R.id.textView\u-weight); textViewReps=itemView.findViewById(R.id.textView\u repss); relativeLayout=(relativeLayout)itemView.findViewById(R.id.exercise\u item\u rel); mOnExerciseClickListener=onExerciseClickListener; setOnClickListener(这个); } @凌驾 公共void onClick(视图v){ onExerciseClickListener.onExerciseClicked(getAdapterPosition()); 如果(!标志){ adapterPos=getAdapterPosition(); flag=true; }否则{ adapterPos=-1; flag=false; } notifyDataSetChanged(); } } 公共接口OnExerciseClickListener{ void onexercise(int位置); } 公共双getWeight(内部位置){ 双倍重量=所有完成的练习。获取(位置)。获取总重量提升(); 返回重量; } 公共int getReps(int职位){ int reps=allCompletedExercises.get(position.getReps(); 返回代表; } }

Java rView.ViewHolder实现View.OnClickListener{ 私有TextView textViewSetNumber; 私有文本视图文本视图权重; 私有文本视图文本视图代表; OnExerciseClickListener mOnExerciseClickListener; 私人亲戚; public ViewHolderTwo(@NonNull View itemView,OnExerciseClickListener OnExerciseClickListener){ 超级(项目视图); textViewSetNumber=itemView.findViewById(R.id.textView\u Set\u Number); textViewWeight=itemView.findViewById(R.id.textView\u-weight); textViewReps=itemView.findViewById(R.id.textView\u repss); relativeLayout=(relativeLayout)itemView.findViewById(R.id.exercise\u item\u rel); mOnExerciseClickListener=onExerciseClickListener; setOnClickListener(这个); } @凌驾 公共void onClick(视图v){ onExerciseClickListener.onExerciseClicked(getAdapterPosition()); 如果(!标志){ adapterPos=getAdapterPosition(); flag=true; }否则{ adapterPos=-1; flag=false; } notifyDataSetChanged(); } } 公共接口OnExerciseClickListener{ void onexercise(int位置); } 公共双getWeight(内部位置){ 双倍重量=所有完成的练习。获取(位置)。获取总重量提升(); 返回重量; } 公共int getReps(int职位){ int reps=allCompletedExercises.get(position.getReps(); 返回代表; } },java,android,android-recyclerview,android-swipe,Java,Android,Android Recyclerview,Android Swipe,我强烈建议使用Groupie之类的库来抽象出RecyclerView的复杂状态管理。否则,您会发现这种命令式样式很快变得无法维护。未来是声明式UI(撰写等)。这样,跟踪项目比跟踪位置容易得多 很难遵循您的代码(您应该使用描述性名称,比如isSelected,而不是flag)。但是,我认为您的问题在于绑定函数在这里没有返回false: if(adapterPos==位置) 在你刷卡之后。使用断点找出原因 @Override public void onExerciseClicked(int

我强烈建议使用Groupie之类的库来抽象出RecyclerView的复杂状态管理。否则,您会发现这种命令式样式很快变得无法维护。未来是声明式UI(撰写等)。这样,跟踪项目比跟踪位置容易得多

很难遵循您的代码(您应该使用描述性名称,比如
isSelected
,而不是
flag
)。但是,我认为您的问题在于绑定函数在这里没有返回false:

if(adapterPos==位置)

在你刷卡之后。使用断点找出原因

@Override
    public void onExerciseClicked(int position) {
        if (recyclerItemClicked == false) {
            saveBtn.setText("Update");
            clearBtn.setVisibility(View.GONE);
            recyclerItemClicked = true;
            double selectedWeight = adapter.getWeight(position);
            String selectedWeightString = Double.toString(selectedWeight);
            editTextWeight.setText(selectedWeightString);

            int selectedReps = adapter.getReps(position);
            String selectedRepsString = Integer.toString(selectedReps);
            editTextReps.setText(selectedRepsString);

        } else {
            clearBtn.setVisibility(View.VISIBLE);
            saveBtn.setText("Save");
            recyclerItemClicked = false;
        }
    }
ItemTouchHelper.SimpleCallback itemTouchHelperCallback = new ItemTouchHelper.SimpleCallback(0, ItemTouchHelper.RIGHT | ItemTouchHelper.LEFT) {
        @Override
        public boolean onMove(@NonNull RecyclerView recyclerView, @NonNull RecyclerView.ViewHolder viewHolder, @NonNull RecyclerView.ViewHolder target) {
            return false;
        }

        @Override
        public void onSwiped(@NonNull RecyclerView.ViewHolder viewHolder, int direction) {

            int logID = allExercises.get(viewHolder.getAdapterPosition()).getLog_id();
            logViewModel.deleteByID(logID);
            clearBtn.setVisibility(View.VISIBLE);
            saveBtn.setText("Save");
            adapter.notifyDataSetChanged();
        }
    };
public class CompletedExercisesListAdapter2 extends RecyclerView.Adapter {

    private OnExerciseClickListener onExerciseClickListener;
    private List<Log_Entries> allCompletedExercises = new ArrayList<>();
    private int adapterPos = -1;

    public boolean flag = false;

    public CompletedExercisesListAdapter2(ArrayList<Log_Entries> allCompletedExercises, OnExerciseClickListener onExerciseClickListener) {
        this.allCompletedExercises = allCompletedExercises;
        this.onExerciseClickListener = onExerciseClickListener;
    }

    @NonNull
    @Override
    public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        LayoutInflater layoutInflater = LayoutInflater.from(parent.getContext());
        View view;

        if (viewType == 0) {
            view = layoutInflater.inflate(R.layout.new_completed_exercise_item, parent, false);
            return new ViewHolderOne(view, onExerciseClickListener);
        }

        view = layoutInflater.inflate(R.layout.completed_exercise_item, parent, false);
        return new ViewHolderTwo(view, onExerciseClickListener);
    }

    @Override
    public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {

        if (getItemViewType(position) == 0) {
            ViewHolderOne viewHolderOne = (ViewHolderOne) holder;

            if (adapterPos == position) {
                viewHolderOne.relativeLayout.setBackgroundColor(Color.parseColor("#567845"));
            } else {
                viewHolderOne.relativeLayout.setBackgroundResource(R.color.dark_grey);
            }

            viewHolderOne.textViewExerciseName.setText(String.valueOf(allCompletedExercises.get(position).getChildExerciseName()));
            //viewHolderOne.textViewSetNumber.setText(String.valueOf(allCompletedExercises.get(position).getSet_number()));
            viewHolderOne.textViewSetNumber.setText(String.valueOf(viewHolderOne.getAdapterPosition() + 1));
            viewHolderOne.textViewWeight.setText(String.valueOf(allCompletedExercises.get(position).getTotal_weight_lifted()));
            viewHolderOne.textViewReps.setText(String.valueOf(allCompletedExercises.get(position).getReps()));

        } else if (getItemViewType(position) == 1) {
            ViewHolderTwo viewHolderTwo = (ViewHolderTwo) holder;

            if (adapterPos == position) {
                viewHolderTwo.relativeLayout.setBackgroundColor(Color.parseColor("#567845"));
            } else {
                viewHolderTwo.relativeLayout.setBackgroundResource(R.color.dark_grey);
            }
            //  viewHolderTwo.textViewSetNumber.setText(String.valueOf(allCompletedExercises.get(position).getSet_number()));
            viewHolderTwo.textViewSetNumber.setText(String.valueOf(viewHolderTwo.getAdapterPosition() + 1));
            viewHolderTwo.textViewWeight.setText(String.valueOf(allCompletedExercises.get(position).getTotal_weight_lifted()));
            viewHolderTwo.textViewReps.setText(String.valueOf(allCompletedExercises.get(position).getReps()));
        }
    }

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

    @Override
    public int getItemViewType(int position) {

        // if list is sorted chronologically
        if (position == 0) {
            return 0;
        }
        if (allCompletedExercises.get(position).getChildExerciseName().equals(allCompletedExercises.get(position - 1).getChildExerciseName())) {
            return 1;
        } else {
            return 0;
        }
    }

    class ViewHolderOne extends RecyclerView.ViewHolder implements View.OnClickListener {
        private TextView textViewExerciseName;
        private TextView textViewSetNumber;
        private TextView textViewWeight;
        private TextView textViewReps;

        OnExerciseClickListener mOnExerciseClickListener;

        private RelativeLayout relativeLayout;

        public ViewHolderOne(@NonNull View itemView, OnExerciseClickListener onExerciseClickListener) {
            super(itemView);

            textViewExerciseName = itemView.findViewById(R.id.textView_ExerciseName3);
            textViewSetNumber = itemView.findViewById(R.id.textView_Set_Number56);
            textViewWeight = itemView.findViewById(R.id.textView_weight78);
            textViewReps = itemView.findViewById(R.id.textView_repss0);
            mOnExerciseClickListener = onExerciseClickListener;
            relativeLayout = (RelativeLayout) itemView.findViewById(R.id.exercise_item_relative);
            itemView.setOnClickListener(this);
        }

        @Override
        public void onClick(View v) {
            onExerciseClickListener.onExerciseClicked(getAdapterPosition());
            if (flag) {
                adapterPos = -1;
                flag = false;
            } else {
                adapterPos = getAdapterPosition();
                flag = true;
            }
            notifyDataSetChanged();
        }
    }

    class ViewHolderTwo extends RecyclerView.ViewHolder implements View.OnClickListener {
        private TextView textViewSetNumber;
        private TextView textViewWeight;
        private TextView textViewReps;
        OnExerciseClickListener mOnExerciseClickListener;
        private RelativeLayout relativeLayout;

        public ViewHolderTwo(@NonNull View itemView, OnExerciseClickListener onExerciseClickListener) {
            super(itemView);
            textViewSetNumber = itemView.findViewById(R.id.textView_Set_Number);
            textViewWeight = itemView.findViewById(R.id.textView_weight);
            textViewReps = itemView.findViewById(R.id.textView_repss);
            relativeLayout = (RelativeLayout) itemView.findViewById(R.id.exercise_item_rel);
            mOnExerciseClickListener = onExerciseClickListener;
            itemView.setOnClickListener(this);
        }

        @Override
        public void onClick(View v) {
            onExerciseClickListener.onExerciseClicked(getAdapterPosition());

            if (!flag) {
                adapterPos = getAdapterPosition();
                flag = true;
            } else {
                adapterPos = -1;
                flag = false;
            }
            notifyDataSetChanged();
        }
    }

    public interface OnExerciseClickListener {
        void onExerciseClicked(int position);
    }
    public double getWeight(int position) {
        double weight = allCompletedExercises.get(position).getTotal_weight_lifted();
        return weight;
    }
    public int getReps(int position) {
        int reps = allCompletedExercises.get(position).getReps();
        return reps;
    }
}