文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

如何在android中获取焦点延迟加载

2023-05-30 19:52

关注

如何在android中获取焦点延迟加载?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

package com.longmaster.iptv.health.DoctorP2P.mode;import android.content.Context;import android.support.v7.widget.LinearLayoutManager;import android.support.v7.widget.RecyclerView;import android.view.KeyEvent;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.LinearLayout;import android.widget.RelativeLayout;import com.longmaster.iptv.health.R;import com.longmaster.iptv.health.common.Constants;import com.longmaster.iptv.health.widget.MagicTextView.MagicTextView;import org.VideoWebInterface.DepartmentParam;import java.util.ArrayList;import java.util.List;import java.util.Timer;import java.util.TimerTask;import cn.longmaster.lmkit.event.MessageProxy;import cn.longmaster.lmkit.utils.AppLogger;public class ButtonAdapter extends RecyclerView.Adapter<ButtonAdapter.MyViewHolder> {  private List<DepartmentParam> mDepartmentList = new ArrayList<>();  private LayoutInflater mInflater;  private Context mContext;  private boolean mIsLostFocus = false;  private LinearLayoutManager mLinearLayoutManager;  private RecyclerView mRecyclerView;  private TimerTask mTimerTask;  private Timer mTimer;  private boolean isLoadData = true;  public ButtonAdapter(Context context) {    super();    this.mContext = context;    mInflater = LayoutInflater.from(context);  }  public void setLayoutManager(LinearLayoutManager linearLayoutManager, RecyclerView re) {    mLinearLayoutManager = linearLayoutManager;    mRecyclerView = re;  }  public void setDepartmentList(List list) {    mDepartmentList = list;  }  public void setFocus(boolean isFocus) {    mIsLostFocus = isFocus;  }  public void setIsLoadData(boolean isLoadData) {    this.isLoadData = isLoadData;  }  public void clear() {    mDepartmentList.clear();  }  @Override  public int getItemCount() {    return mDepartmentList.size();  }  @Override  public void onBindViewHolder(final MyViewHolder holder, final int position) {    holder.tv.setText(mDepartmentList.get(position).GetDeptName());    holder.tv.setFocusable(true);  }  @Override  public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {    View view = mInflater.inflate(R.layout.list_class_item, parent, false);    MyViewHolder holder = new MyViewHolder(view);    return holder;  }  class MyViewHolder extends RecyclerView.ViewHolder {    MagicTextView tv;    RelativeLayout mOuterBgRL;    public MyViewHolder(final View view) {      super(view);      RecyclerView.LayoutParams param = (RecyclerView.LayoutParams) itemView.getLayoutParams();      param.height = LinearLayout.LayoutParams.WRAP_CONTENT;      param.width = LinearLayout.LayoutParams.MATCH_PARENT;      itemView.setVisibility(View.VISIBLE);      tv = (MagicTextView) view.findViewById(R.id.class_name);      mOuterBgRL = (RelativeLayout) view.findViewById(R.id.rl_class_outer_bg);      tv.setOnFocusChangeListener(new View.OnFocusChangeListener() {        @Override        public void onFocusChange(View v, boolean hasFocus) {          if (hasFocus) {            mOuterBgRL.setBackgroundResource(R.drawable.p2p_select);            if (isLoadData) {              mTimerTask = new TimerTask() {                @Override                public void run() {                  int iPosition = getAdapterPosition();                  DepartmentParam departmentParam = mDepartmentList.get(iPosition);                  MessageProxy.sendMessage(Constants.Message.P2P_SELECTION_DOCTOR_CLASS, iPosition, departmentParam);                }              };              mTimer = new Timer();              mTimer.schedule(mTimerTask, 500);            }          } else {            clearTimer();            if (mIsLostFocus) {              mOuterBgRL.setBackgroundResource(R.drawable.p2p_unselect);            }                      }        }      });      tv.setOnKeyListener(new View.OnKeyListener() {        @Override        public boolean onKey(View v, int keyCode, KeyEvent event) {          if (event.getAction() == KeyEvent.ACTION_DOWN) {            int mCurrentSelectPosition = getAdapterPosition();            int mDepartmentCount = mDepartmentList.size();            AppLogger.e("mCurrentSelectPosition>>>>>>>>", mCurrentSelectPosition + "----" + mDepartmentCount);            switch (keyCode) {              case KeyEvent.KEYCODE_DPAD_LEFT:                setIsLoadData(true);                setFocus(true);                if (mCurrentSelectPosition == (mLinearLayoutManager.findFirstVisibleItemPosition())) {                  mRecyclerView.smoothScrollBy(-400, 0);                }                View view1 = mLinearLayoutManager.findViewByPosition(mCurrentSelectPosition - 1);                if (view1 != null) {                  setViewFocus(view1.findViewById(R.id.class_name));                }                return true;              case KeyEvent.KEYCODE_DPAD_RIGHT:                if (mCurrentSelectPosition == mDepartmentCount - 1) {                  return true;                }                setIsLoadData(true);                setFocus(true);                if (mCurrentSelectPosition == (mLinearLayoutManager.findLastVisibleItemPosition())) {                  mRecyclerView.smoothScrollBy(400, 0);                }                View view = mLinearLayoutManager.findViewByPosition(mCurrentSelectPosition + 1);                if (view != null) {                  setViewFocus(view.findViewById(R.id.class_name));                }                return true;              case KeyEvent.KEYCODE_BACK:                break;              case KeyEvent.KEYCODE_DPAD_UP:                break;              case KeyEvent.KEYCODE_DPAD_DOWN:                setFocus(false);                mOuterBgRL.setBackgroundResource(R.drawable.p2p_key_down);                break;            }          }          return false;        }      });    }  }  public void setViewFocus(View view) {    view.setFocusable(true);    view.setFocusableInTouchMode(true);    view.requestFocus();    view.requestFocusFromTouch();  }  private void clearTimer() {    if (mTimer != null) {      mTimer.cancel();    }    if (mTimerTask != null) {      mTimerTask.cancel();    }  }}

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注编程网行业资讯频道,感谢您对编程网的支持。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯