سلام.در کلاس Timer کد زیر من ارور Only the original thread that created a view hierarchy can touch it - هفت خط کد انجمن پرسش و پاسخ برنامه نویسی

سلام.در کلاس Timer کد زیر من ارور Only the original thread that created a view hierarchy can touch it

0 امتیاز
package com.example.myapplication;

import android.app.Dialog;
import android.content.Context;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ProgressBar;
import android.widget.TextView;
import android.widget.Toast;

import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;

import java.util.List;
import java.util.Timer;
import java.util.TimerTask;

public class MyAdapter extends RecyclerView.Adapter<MyAdapter.CardViewHolder> {

    List<Model> lists;
    Context context;
    MyDatabase myDatabase;


    MyAdapter(Context context,List<Model> lists){

        this.lists=lists;
        this.context=context;
        myDatabase=new MyDatabase(context);
    }

    @NonNull
    @Override
    public CardViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View view=LayoutInflater.from(context).inflate(R.layout.card_view,parent,false);
        return new CardViewHolder(view);
    }

    @Override
    public void onBindViewHolder(@NonNull final CardViewHolder holder, int position) {
        final Model model = lists.get(position);
        holder.txtName.setText(model.getName());
        holder.txtDate.setText(model.getDate());

        holder.txtName.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Dialog d = new Dialog(context);
                d.setContentView(R.layout.del_dialog);
                d.show();
                final ProgressBar p = d.findViewById(R.id.p);
                p.setMax(3000);

                final Timer timer = new Timer();
                timer.schedule(new TimerTask() {
                    int i = 0;
                    @Override
                    public void run() {

                        i+=10;
                        p.setProgress(i);
                        if (i>2900){
                            timer.cancel();
                            myDatabase.deletinfo(model.getId());
                            lists.remove(holder.getPosition());
                            notifyItemRemoved(holder.getPosition());
                        }
                    }
                },0,10);



            }
        });
    }

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

    class CardViewHolder extends RecyclerView.ViewHolder {

        TextView txtName,txtDate;

        public CardViewHolder(@NonNull View itemView) {
            super(itemView);

            txtName=itemView.findViewById(R.id.name);
            txtDate=itemView.findViewById(R.id.date);
        }
    }
}
سوال شده مرداد 9, 1398  بوسیله ی ciaoFratello (امتیاز 9)   2

پاسخ شما

اسم شما برای نمایش (دلخواه):
از ایمیل شما فقط برای ارسال اطلاعات بالا استفاده میشود.
تایید نامه ضد اسپم:

برای جلوگیری از این تایید در آینده, لطفا وارد شده یا ثبت نام کنید.
...