gpt4 book ai didi

java - 2 个 TabItem 的一个用户列表

转载 作者:行者123 更新时间:2023-12-01 18:36:02 24 4
gpt4 key购买 nike

我有一个包含 2 个 TabItemUsersList。第一个 TabItemMyUsers,第二个是 Favorites。我使用 foreach 循环对 Users 进行排序。现在,我想要的是将 Users List 显示到 MyUsers 中,并在循环后显示排序后的 Users进入 Collection 夹

UserFragment.java

public class UserFragment extends Fragment implements MyUserRecyclerViewAdapter.OnItemListener {

@BindView(R.id.tabs)
TabLayout mTabLayout;
@BindView(R.id.tabItem)
TabItem mTabItemMyUsers;
@BindView(R.id.tabItem2)
TabItem mTabItemFavorites;

private UserApiService mApiService;
private List<User> mUsers;
private List<User> mFavorites;
private RecyclerView mRecyclerView;

private int mPosition;

public static UserFragment newInstance(int position) {
UserFragment userFragment = new UserFragment();

Bundle args = new Bundle();
args.putInt("position", position);
userFragment.setArguments(args);

return userFragment;
}

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mApiService = DI.getUserApiService();

mPosition = getArguments().getInt("position", 0);

}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_user_list, container, false);
Context context = view.getContext();
mRecyclerView = (RecyclerView) view;
mRecyclerView.setLayoutManager(new LinearLayoutManager(context));
mRecyclerView.addItemDecoration(new DividerItemDecoration(getContext(), DividerItemDecoration.VERTICAL));

initList();
isUserFavorite();
return view;
}


public void isUserFavorite() {
mFavorites = new ArrayList<>();

for (User user : mUsers) {
if (user.isFavorite()) {
mFavorites.add(user);
}
}
mRecyclerView.setAdapter(new MyUserRecyclerViewAdapter(mFavorites, this));

}

private void initList() {
mUser = mApiService.getUsers();
mRecyclerView.setAdapter(new MyUserRecyclerViewAdapter(mUsers, this));

}

@Override
public void onStart() {
super.onStart();
EventBus.getDefault().register(this);
}

@Override
public void onStop() {
super.onStop();
EventBus.getDefault().unregister(this);
}

最佳答案

如果我理解你的问题的话。您将创建两个列表,一个是收到的无序列表的用户列表,另一个是标记为 Collection 夹的用户列表。然后,您希望通过单击同一布局中的 TabLayout 中的两个选项卡之一来切换要在 fragment 布局的单个 RecyclerView 中显示的列表。

您应该先简单地填充列表,而不是将它们同时设置到 RecyclerView 中,然后使用 addOnTabSelectedListener 管理 mTabLayout 上的选项卡选择,您可以在其中选择列表设置到您的 recyclerview 中,因为您已经为列表定义了 LayoutManager ,接下来最后在适配器上使用 notifyDataSetChanged() 来更新 View 。

因此,保持大部分逻辑相同,您的代码需要重构为如下所示:

...
@Override
public View onCreateView(La...) {
...
mRecyclerView.setLayoutManager(new LinearLayoutManager(context));
...
initList();
isUserFavorite();
initSelection();
return view;
}

public void isUserFavorite() {
mFavorites = new ArrayList<>();
for (User user : mUsers) {
if (user.isFavorite()) {
mFavorites.add(user);
}
}
}

private void initList() {
mUser = mApiService.getUsers();
}


public void initSelection() {
mTabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
@Override
public void onTabSelected(TabLayout.Tab tab) {
// assuming users is at tab index 0 and favorites is at tab Index 1
if(tab.getPosition() == 1) {
selectFavorites();
} else {
selectUsers();
}
}
@Override
public void onTabUnselected(TabLayout.Tab tab) {
}
@Override
public void onTabReselected(TabLayout.Tab tab) {
}
});
// if you wish to select the users tab at 0 by default
Objects.requireNonNull(mTabLayout.getTabAt(0)).select();
}

private void selectFavorites() {
// whichever adapter you were using to show favorites
MyUserRecyclerViewAdapter mFavAdapter = new MyUserRecyclerViewAdapter(mFavorites, context);
mRecyclerView.setAdapter(mFavAdapter);
mFavAdapter.notifyDataSetChanged();
}

private void selectUsers() {
// whichever adapter you were using to show all users
MyNeighbourRecyclerViewAdapter mUsersAdapter = new MyNeighbourRecyclerViewAdapter(mUsers, context);
mRecyclerView.setAdapter(mUsersAdapter);
mFavAdapter.notifyDataSetChanged();
}

希望这就是您正在寻找的内容。

关于java - 2 个 TabItem 的一个用户列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60042615/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com