RecyclerView
Scroll hang when I put inside NestedScrollView
it work if set recyclerView.setNestedScrollingEnabled(false)
but problem is if i set recyclerView.setNestedScrollingEnabled(false)
then RecyclerView
Adapter onViewAttachedToWindow(ViewHolder holder)
and onViewDetachedFromWindow(ViewHolder holder)
method not called and also onBindViewHolder(ViewHolder holder, int position)
not called when scroll the list.
My HeaderView is More Complex so I unable to add as header in RecyclerView
so I put it in NestedScrollView
How can I use This two method when RecyclerView
is Inside NestedScrollView
@Override
public void onViewAttachedToWindow(ViewHolder holder) {
super.onViewAttachedToWindow(holder);
}
@Override
public void onViewDetachedFromWindow(ViewHolder holder) {
super.onViewDetachedFromWindow(holder);
}
Below is my code;
<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/nested_scrollview"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
android:fillViewport="true">
<android.support.v7.widget.RecyclerView
android:id="@+id/recyclerView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_behavior="@string/appbar_scrolling_view_behavior" />
</android.support.v4.widget.NestedScrollView>
Activity Code
RecyclerView recyclerView = findViewById(R.id.recyclerView);
//recyclerView.setNestedScrollingEnabled(false);
recyclerView.setLayoutManager(new LinearLayoutManager(this));
TMPAdapter adapter = new TMPAdapter(this, strings);
recyclerView.setAdapter(adapter);
Adapter Code
public class TMPAdapter extends RecyclerView.Adapter<TMPAdapter.ViewHolder> {
private static final String TAG = LogUtils.makeLogTag(TMPAdapter.class);
private List<String> mListValue;
private Context mContext;
public TMPAdapter(Context context, List<String> listValue) {
this.mContext = context;
this.mListValue = listValue;
}
@Override
public void onViewAttachedToWindow(ViewHolder holder) {
super.onViewAttachedToWindow(holder);
}
@Override
public void onViewDetachedFromWindow(ViewHolder holder) {
super.onViewDetachedFromWindow(holder);
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View itemView = LayoutInflater.from(parent.getContext())
.inflate(R.layout.item_like_list, parent, false);
return new ViewHolder(itemView);
}
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
holder.mTxtUserName.setText(mListValue.get(position));
}
@Override
public long getItemId(int position) {
return super.getItemId(position);
}
@Override
public int getItemCount() {
return mListValue.size();
}
public class ViewHolder extends RecyclerView.ViewHolder {
private VeniTextView mTxtUserName;
ViewHolder(View view) {
super(view);
mTxtUserName = view.findViewById(R.id.txt_user_name);
}
}
}