Dynamisches ändern der Anzahl der Spalten von a GridLayoutManager
Ich bin eigentlich mit GridLayoutManager mit zwei Spalten in mein app, und ich möchte eine Spalte je nach die Art der Ansicht verwendet.
Hier ist der code, ich habe in der Methode "onCreateView()" meiner fragment :
//Recycler view for users
usersList = (RecyclerView) mView.findViewById(R.id.usersList);
//Layout manager (grid of users
layoutManager = new GridLayoutManager(mContext, 2);
usersList.setLayoutManager(layoutManager);
//ArrayList of users
users = new ArrayList<User>();
//Set the adapter for the list of users
mHomeListAdapter = new HomeListAdapter(getActivity(), users);
usersList.setAdapter(mHomeListAdapter);
Dann, in meinem adapter, habe ich diese Art von code :
@Override
public int getItemViewType(int position) {
if (position == 5) {
return TYPE_PREMIUM;
} else {
return TYPE_ITEM;
}
}
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
if (viewType == TYPE_PREMIUM) {
View view = mInflater.inflate(R.layout.become_premium, parent, false);
HeaderViewHolder holder = new HeaderViewHolder(view);
return holder;
} else {
View view = mInflater.inflate(R.layout.posts_item, parent, false);
ViewHolderPosts holder = new ViewHolderPosts(view);
return holder;
}
}
So, wenn die Ansicht "TYPE_PREMIUM" verwendet wird, würde ich gerne eine Schaltfläche angezeigt (also in einer Spalte) und haben eine normale gridview (zwei Spalten) für die anderen Ergebnisse.
Ist es möglich, dies zu tun?
Dank!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn ich Ihre Frage zu verstehen, Sie möchte premium-Typ-Ansichten Spanne 2 Spalten statt 1? Das ist möglich durch die Einstellung einer benutzerdefinierten SpanSizeLookup mit setSpanSizeLookup(SpanSizeLookup).
war ich verwenden Sie eine checkBox für die änderung meines Layout-manager-Spalten.
Sie sollten diese Option verwenden, ändern GridLayoutManager Spalten .
hier ist der code :
und boolean für die überprüfung layoutManager Änderungen in onResume() , onRestart() und onPause() Methode. verwenden Sie es wie diese :