안에 내가 검색 연락처 기능을 개발하고있을 때, 해당 화면에서 (사실 fillViewport =) NestedScrolView 내부 RecyclerView있다. 화면 디자인 : ArrayList에로 현재 장치의 모든 연락처를 넣은 후
(이 디자인은 고객에 의해 받아 들여, 내가을 변경할 수 없습니다), 검색 결과가이 배열에서 필터링됩니다. 사용자가 어떤 결과이없는 입력을 입력하면
1. 다음 사용자 명확 검색, 내가 다시 모든 결과를 보여주고 있습니다
는 매우 랙이 응용 프로그램을 구성하는 여러 가지 경우가있다. NestedScrollView은 RecyclerView (예 : 300 개 항목)의 모든 항목에 대해 UI를 렌더링해야합니다.
2. 결과 수가 많은 경우 (예 : 1 ~ 300 항목). NestedScrollView는 RecyclerView 내가 RecyclerView의 기술을 재활용이 디자인 휴식을 알고
나쁜 성능은 사용 RecyclerView이 NestedScrollView
의 많은 항목에 대한 UI를 렌더링 할 수있다,하지만 난 그것을 변경할 수 없습니다. 내가 뭘하려
:
recyclerView.setNestedScrollingEnabled(false);
AndroidManifest를에서 :
android:windowSoftInputMode="adjustNothing"
어댑터 : 당신은 잘못 RecyclerView를 사용하는
public class RecyclerContactAdapter extends RecyclerView.Adapter<RecyclerContactAdapter.ViewHolder> {
private List<MobileContact> contacts;
private Context context;
public RecyclerContactAdapter() {
contacts = new ArrayList<>();
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
this.context = parent.getContext();
View view = LayoutInflater.from(context)
.inflate(R.layout.item_recycler_contact, parent, false);
return new ViewHolder(view);
}
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
//set data for view
}
@Override
public int getItemCount() {
return contacts.size();
}
protected class ViewHolder extends RecyclerView.ViewHolder {
private TextView tvAlphabetHeader;
private CircleImageView civAvatar;
private TextView tvContactName;
private TextView tvStatus;
private CheckBox cbInvited;
private RelativeLayout rlAlphabetHeader;
private RelativeLayout rlContainer;
protected ViewHolder(View itemView) {
super(itemView);
tvAlphabetHeader = itemView.findViewById(R.id.item_recycler_contact_tv_alphabet_header);
civAvatar = itemView.findViewById(R.id.item_recycler_contact_civ_avatar);
tvContactName = itemView.findViewById(R.id.item_recycler_contact_tv_name);
tvStatus = itemView.findViewById(R.id.item_recycler_contact_tv_status);
cbInvited = itemView.findViewById(R.id.item_recycler_contact_cb_contact);
rlAlphabetHeader = itemView.findViewById(R.id.item_recycler_contact_rl_alphabet);
rlContainer = itemView.findViewById(R.id.item_recycler_contact_rl_contact);
}
}
public void addAll(List<MobileContact> mobileContacts) {
this.contacts.clear();
this.contacts.addAll(mobileContacts);
notifyDataSetChanged();
}
public void add(MobileContact mobileContact) {
this.contacts.add(mobileContact);
}
public List<MobileContact> getContacts() {
return this.contacts;
}
}
리필러 어댑터 게시 –
UI 디자인을 좀 더 설명해 주시겠습니까? 이것의 어느 부분이 스크롤 가능합니까? 즉, nestedscrollview 또는 nestedscrollview 내부의 recyclerview를 스크롤 할 수 있습니까? – Okas
@Okas 도구 모음을 제외하고 사용자가 전체 화면을 스크롤 할 수 있습니다. –