Android在单个活动中的多个回收视图

阿米尔·多拉(Amir Dora)。

我正面临设计挑战,我想设计一个应用程序的布局,该应用程序以固定的第一最左列(未更改)以表格形式显示数据,当用户按下next按钮时,可以更改最右边的第二列。我最初的方法是使用2个回收视图,一个垂直视图和一个水平视图。由于我在一个arraylist中获得公司名称(水平显示)。一个垂直的数组列表中最左边的列,而一个数组列表中的其余数据,则以行显示。然后在下一个按钮上单击以使用表中的下一组元素重新填充recycleview,数据为matrix形式为了直观地显示我想要实现的目标,我设计了一个样机。如果有人对实现此布局设计的最佳方法有什么想法,我将非常感激。

在此处输入图片说明

public class TableViewActivity2 extends AppCompatActivity {

    private RecyclerView recyclerViewGames, recyclerViewOdds;
    private CustomAdapterGames adapterGames;
    private CustomAdapterOdds adapterOdds;

    private ArrayList<String> stringList;

    private int draggingView = -1;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_table_view_2);

        AppBarHelper.setAppBarText(this, R.string.title_activity_table_view);
        Toolbar toolbar = findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);

        recyclerViewGames = findViewById(R.id.table_view_recycle_view_games);
        recyclerViewOdds = findViewById(R.id.table_view_recycle_view_odds);

        LinearLayoutManager layoutManager = new LinearLayoutManager(getApplicationContext(),LinearLayoutManager.VERTICAL,false);
        LinearLayoutManager layoutManager2 = new LinearLayoutManager(getApplicationContext(),LinearLayoutManager.VERTICAL,false);

        recyclerViewGames.setLayoutManager(layoutManager);
        recyclerViewOdds.setLayoutManager(layoutManager2);

        stringList = new ArrayList<>();

        stringList.add("dummy");
        stringList.add("dummy");
        stringList.add("dummy");
        stringList.add("dummy");
        stringList.add("dummy");

        adapterGames = new CustomAdapterGames(this, stringList);
        adapterOdds = new CustomAdapterOdds(this, stringList);



        recyclerViewGames.setAdapter(adapterGames);
        recyclerViewOdds.setAdapter(adapterOdds);

        recyclerViewGames.addOnScrollListener(scrollListener);
        recyclerViewOdds.addOnScrollListener(scrollListener);
    }

    private RecyclerView.OnScrollListener scrollListener = new RecyclerView.OnScrollListener() {
        @Override
        public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
            super.onScrollStateChanged(recyclerView, newState);
            if (recyclerViewGames == recyclerView && newState == RecyclerView.SCROLL_STATE_DRAGGING) {
                draggingView = 1;
            } else if (recyclerViewOdds == recyclerView && newState == RecyclerView.SCROLL_STATE_DRAGGING) {
                draggingView = 2;
            }
        }

        @Override
        public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
            super.onScrolled(recyclerView, dx, dy);
            if (draggingView == 1 && recyclerView == recyclerViewGames) {
                recyclerViewOdds.scrollBy(dx, dy);
            } else if (draggingView == 2 && recyclerView == recyclerViewOdds) {
                recyclerViewGames.scrollBy(dx, dy);
            }
        }
    };


}

我面临的问题是,即使我尝试使它们同时滚动,两个recycleview有时也会独立滚动。

莉娜·布鲁(Lena Bru)

这是基本概念,运气取决于您自己来设置布局/模型和其他逻辑!

Github POC

在此处输入图片说明

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章