Android 如何在适配器类中添加处理程序

Android 如何在适配器类中添加处理程序,android,android-recyclerview,Android,Android Recyclerview,我有一个android应用程序,带有RecyclerView,其中包括: EditText 按钮 单击按钮,应将数据发送到服务器 我想添加一个处理程序,以在3秒内执行comethode。如何在适配器中实现。适配器的示例类: 在课堂上检查下面的内容 mHolder.tvUserFrom.setOnClickListener(new View.OnClickListener() { @Override public void onClick(Vi

我有一个android应用程序,带有
RecyclerView
,其中包括:

  • EditText
  • 按钮
单击
按钮
,应将数据发送到服务器


我想添加一个处理程序,以在3秒内执行comethode。如何在适配器中实现。

适配器的示例类:

在课堂上检查下面的内容

 mHolder.tvUserFrom.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Handler handler = new Handler();
                handler.postDelayed(new Runnable() {
                    @Override
                    public void run() {
                       // Execute a comethode in the intervel 3sec
                    }
                },3000);
            }
        });
MyAdapter类

public class MyAdapter extends BaseAdapter {

    private ArrayList<Model> mItems = new ArrayList<>();
    private BaseActivity activity;

    public MyAdapter(BaseActivity activity, ArrayList<Model> users) {
        this.activity = activity;
        this.mItems = users;
    }

    @Override
    public int getCount() {
        return mItems.size();
    }

    @Override
    public int getViewTypeCount() {

        if (getCount() < 1){
            return 1;
        } else {
            return getCount();
        }
    }

    @Override
    public int getItemViewType(int position) {

        return position;
    }


    @Override
    public MessageModel getItem(int position) {
        return mItems.get(position);
    }

    @Override
    public long getItemId(int position) {
        return 0;
    }

    @Override
    public View getView(final int position, View convertView, ViewGroup parent) {
        ViewHolder mHolder;
        View v = convertView;
        Context context = parent.getContext();
        LayoutInflater layoutInflater = LayoutInflater.from(context);
        if (v == null) {
            v = layoutInflater.inflate(R.layout.row_item_chat_message, null);

            mHolder = new ViewHolder();

            mHolder.tvUserFrom = (TextView) v.findViewById(R.id.tvUserFrom);
            mHolder.tvUserTo = (TextView) v.findViewById(R.id.tvUserTo);

            v.setTag(mHolder);

        } else {
            mHolder = (ViewHolder) v.getTag();
        }

        Model model = mItems.get(position);

        mHolder.tvUserFrom.setText("John");


        mHolder.tvUserFrom.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Handler handler = new Handler();
                handler.postDelayed(new Runnable() {
                    @Override
                    public void run() {
                       // Execute a comethode in the intervel 3sec
                    }
                },3000);
            }
        });




        return v;
    }

    static class ViewHolder {
        public ImageView ivUser;
        public TextView tvUserFrom,tvUserTo;
    }
}
公共类MyAdapter扩展了BaseAdapter{
private ArrayList mItems=new ArrayList();
私人活动;
公共MyAdapter(BaseActivity活动,ArrayList用户){
这个。活动=活动;
this.ms=用户;
}
@凌驾
public int getCount(){
返回mItems.size();
}
@凌驾
public int getViewTypeCount(){
if(getCount()<1){
返回1;
}否则{
返回getCount();
}
}
@凌驾
public int getItemViewType(int位置){
返回位置;
}
@凌驾
公共消息模型getItem(int位置){
返回mItems.get(位置);
}
@凌驾
公共长getItemId(int位置){
返回0;
}
@凌驾
公共视图getView(最终整数位置、视图转换视图、视图组父视图){
持票人;
视图v=转换视图;
Context=parent.getContext();
LayoutInflater LayoutInflater=LayoutInflater.from(上下文);
如果(v==null){
v=布局更平坦。充气(R.layout.row\u item\u chat\u message,空);
mHolder=新的ViewHolder();
mHolder.tvUserFrom=(TextView)v.findviewbyd(R.id.tvUserFrom);
mHolder.tvUserTo=(TextView)v.findviewbyd(R.id.tvUserTo);
v、 setTag(mHolder);
}否则{
mHolder=(ViewHolder)v.getTag();
}
模型=mItems.get(位置);
mHolder.tvUserFrom.setText(“约翰”);
mHolder.tvUserFrom.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
Handler=newhandler();
handler.postDelayed(新的Runnable(){
@凌驾
公开募捐{
//在intervel 3sec中执行comethode
}
},3000);
}
});
返回v;
}
静态类视窗夹{
公共图像用户;
公共文本查看tvUserFrom,tvUserTo;
}
}

导入android.os.Handler

要在适配器中使用
处理程序
,您可以在适配器中使用以下代码段:

Handler handler = new Handler();
handler.postDelayed(new Runnable() {
    @Override
    public void run() {
        // your task
    }
},3000);

导入android.os.Handler


那么只有它才能工作

在getView中尝试这个,100%工作 我添加了延迟乐趣来延迟活动的启动

科特林:

        var mycon=context
        val secondsDelayed = 1
        android.os.Handler().postDelayed({
            mycon.startActivity(Intent(mycon, ListInvests::class.java))
        }, secondsDelayed * 1000.toLong())