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