遥控移动焦点优化

dev
李桢 1 year ago
parent 1ea0b5c9f9
commit d20870fb26
  1. 3
      app/src/main/java/com/unionmed/unionmedtv/activity/HospitalActivity.java
  2. 2
      app/src/main/java/com/unionmed/unionmedtv/fragment/MyDoctorFragment.java
  3. 21
      app/src/main/java/com/unionmed/unionmedtv/utils/MyGridLayoutManager.java

@ -128,6 +128,9 @@ public class HospitalActivity extends BaseActivity {
public void onSucceed(HttpData<ApiResponse<GetHospitalApi>> stringHttpData) { public void onSucceed(HttpData<ApiResponse<GetHospitalApi>> stringHttpData) {
LogUtils.e("成功:" + stringHttpData); LogUtils.e("成功:" + stringHttpData);
if (stringHttpData.getData().getCode() == 200) { if (stringHttpData.getData().getCode() == 200) {
if(stringHttpData.getData().getData()==null){
return;
}
List<GetHospitalApi.MemberBean> doctorInfo = stringHttpData.getData().getData().getMember(); List<GetHospitalApi.MemberBean> doctorInfo = stringHttpData.getData().getData().getMember();
if (doctorInfo == null) { if (doctorInfo == null) {
return; return;

@ -117,6 +117,7 @@ public class MyDoctorFragment extends Fragment implements View.OnClickListener {
public void onSucceed(HttpData<ApiResponse<GetContractedDoctorApi.DoctorInfo>> stringHttpData) { public void onSucceed(HttpData<ApiResponse<GetContractedDoctorApi.DoctorInfo>> stringHttpData) {
LogUtils.e("成功:" + stringHttpData); LogUtils.e("成功:" + stringHttpData);
if (stringHttpData.isRequestSucceed()) { if (stringHttpData.isRequestSucceed()) {
if(stringHttpData.getData().isInnerRequestSucceed()){
List<GetContractedDoctorApi.DoctorInfo.MemberBean> doctorInfo = stringHttpData.getData().getData().getMember(); List<GetContractedDoctorApi.DoctorInfo.MemberBean> doctorInfo = stringHttpData.getData().getData().getMember();
if (doctorInfo.size()==0) { if (doctorInfo.size()==0) {
recyclerView.setVisibility(View.GONE); recyclerView.setVisibility(View.GONE);
@ -126,6 +127,7 @@ public class MyDoctorFragment extends Fragment implements View.OnClickListener {
list.addAll(doctorInfo); list.addAll(doctorInfo);
contractedDoctorAdapter.notifyDataSetChanged(); contractedDoctorAdapter.notifyDataSetChanged();
} }
}
} }

@ -51,37 +51,40 @@ public class MyGridLayoutManager extends GridLayoutManager {
@Override @Override
public View onInterceptFocusSearch(View focused, int direction) { public View onInterceptFocusSearch(View focused, int direction) {
int currentPosition = getPosition(getFocusedChild()); int currentPosition = getPosition(getFocusedChild());
int spanCount = getSpanCount(); int count = getItemCount()-1;
int lastVisiblePosition = findLastVisibleItemPosition();
switch (direction) { switch (direction) {
case View.FOCUS_DOWN: case View.FOCUS_DOWN:
if(currentPosition + getSpanCount()<lastVisiblePosition){ if (currentPosition + getSpanCount() < count) {
int nextRowFirstPosition1 = currentPosition + getSpanCount(); int nextRowFirstPosition1 = currentPosition + getSpanCount();
scrollToPosition(nextRowFirstPosition1); scrollToPosition(nextRowFirstPosition1);
return findViewByPosition(nextRowFirstPosition1); return findViewByPosition(nextRowFirstPosition1);
}else if(currentPosition + getSpanCount()>lastVisiblePosition){ } else if (currentPosition + getSpanCount() > count) {
scrollToPosition(lastVisiblePosition); scrollToPosition(count);
return findViewByPosition(lastVisiblePosition); return findViewByPosition(count);
} }
break; break;
case View.FOCUS_UP: case View.FOCUS_UP:
if (currentPosition % getSpanCount() == 0 && upView != null) { if (currentPosition % getSpanCount() == 0 && upView != null) {
upView.requestFocus(); upView.requestFocus();
} else if (currentPosition - getSpanCount() < count) {
int nextRowFirstPosition1 = currentPosition - getSpanCount();
scrollToPosition(nextRowFirstPosition1);
return findViewByPosition(nextRowFirstPosition1);
} }
break; break;
case View.FOCUS_RIGHT: case View.FOCUS_RIGHT:
if (currentPosition % getSpanCount() == getSpanCount() - 1) { if (currentPosition<count) {
int nextRowFirstPosition = currentPosition + getSpanCount() - (getSpanCount() - 1); int nextRowFirstPosition = currentPosition + getSpanCount() - (getSpanCount() - 1);
scrollToPosition(nextRowFirstPosition); scrollToPosition(nextRowFirstPosition);
return findViewByPosition(nextRowFirstPosition); return findViewByPosition(nextRowFirstPosition);
} else if (currentPosition == lastVisiblePosition) { } else if (currentPosition == count) {
return findViewByPosition(currentPosition); return findViewByPosition(currentPosition);
} }
break; break;
case View.FOCUS_LEFT: case View.FOCUS_LEFT:
if (currentPosition == 0) { if (currentPosition == 0) {
return findViewByPosition(currentPosition); return findViewByPosition(currentPosition);
} else if (currentPosition % getSpanCount() == 0) { } else if (currentPosition <=count) {
int nextRowFirstPosition = currentPosition - 1; int nextRowFirstPosition = currentPosition - 1;
scrollToPosition(nextRowFirstPosition); scrollToPosition(nextRowFirstPosition);
return findViewByPosition(nextRowFirstPosition); return findViewByPosition(nextRowFirstPosition);

Loading…
Cancel
Save