小编dan*_*apd的帖子

通过 FragmentPagerAdapter 中 Fragment 的 Retrofit 为多个 tablayout 选项卡获取不同的数据

条件: 我有一个 Activity,并且正在PagerAdapter extends FragmentPagerAdapter使用一个 Fragment 类进行创建。TabLayout 包含 10 个选项卡。我已经TabLayout.addOnTabSelectedListener更新onTabSelected()了应用程序中的一些自定义变量SharedPreferences,这取决于当前选项卡名称和选项卡索引。选项卡的名称不是静态的 - 也有从服务器加载的名称。

我的任务: 有了这个值,我应该retrofit2 Call向我的服务器创建一个值,并使用 recyclerview 为我的Fragment.

我的问题: 我正在为不同的选项卡加载相同的数据,这些选项卡应该包含不同的数据!我知道发生这种情况是因为在所有情况下我都有相同的SharedPreferences变量值,所以我retrofit Call在相同的条件下进行。

setOffscreenPageLimit()无法设置为0 - 根据文档,默认值为 1: https: //developer.android.com/reference/kotlin/androidx/viewpager/widget/ViewPager#setoffscreenpagelimit;

setUserVisibleHint()所以我发现这就像解决我的问题的一些变体,但它不能被覆盖,因为现在已被弃用。

解决方案: 我认为我应该以某种方式保存上一个和下一个选项卡名称,然后我可以Call在不同的条件下进行不同的并行改造。当选择选项卡时,我可以获得当前、上一个和下一个选项卡名称。但是我应该如何、在哪里以及何时再进行两次改造呼叫呢?

UPD 08.02.2022:仍在思考这个问题。

代码:

一些Activity.java

public class SomeActivity extends BaseActivity  {

    private String TAG="SomeActivity";
    private Context context;

    private TabLayout tabs;
    private ViewPager viewpager;
    private ProgressBar PBLoading;
    private PagerAdapter_SomePAdapter adapter; …
Run Code Online (Sandbox Code Playgroud)

java android android-fragments android-viewpager android-pageradapter

5
推荐指数
1
解决办法
326
查看次数

Android TV 方向键的 KeyEvent

在活动中,我的工具栏中有 TabLayout、ViewPager 和菜单按钮(汉堡包)。

使用键盘上的箭头,默认情况下我可以从选项卡移动到查看寻呼机项目,没有任何问题,但我无法将焦点放在工具栏菜单按钮上。

首先,当按下 KeyEvent.KEYCODE_DPAD_UP 时我无法收听,我想知道为什么。

我的代码:

viewPager = findViewById(R.id.viewpager);
viewPager.setAdapter(adapter);
tabLayout = findViewById(R.id.tabs);
tabLayout.setupWithViewPager(viewPager);

tabLayout.setOnKeyListener(new View.OnKeyListener() {
    @Override
    public boolean onKey(View view, int i, KeyEvent keyEvent) {
        if ((keyEvent.getAction() == KeyEvent.ACTION_UP) && (i == KeyEvent.KEYCODE_DPAD_UP)) {
            toolbar.setFocusable(true);
            toolbar.setFocusableInTouchMode(true);
            tabLayout.setNextFocusUpId(R.id.toolbar);
            Log.d(TAG, "KEYCODE_DPAD_UP");
            tabLayout.setTabMode(TabLayout.MODE_SCROLLABLE);
            tabLayout.setDescendantFocusability(ViewGroup.FOCUS_BLOCK_DESCENDANTS);
        }
        return false;
    }
});
Run Code Online (Sandbox Code Playgroud)

我的 if 语句有什么问题?

android if-statement listener d-pad android-tv

4
推荐指数
1
解决办法
4642
查看次数