Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/193.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 单个活动中的多个回收视图_Android_Android Layout_Android Recyclerview_Tableview - Fatal编程技术网

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

Android 单个活动中的多个回收视图,android,android-layout,android-recyclerview,tableview,Android,Android Layout,Android Recyclerview,Tableview,我面临着一个设计挑战,我想为一个应用程序设计一个布局,该应用程序以表格的形式显示数据,最左边的第1列是固定的(未更改),最右边的第2列可以在用户按下“下一步”按钮时更改。我最初的方法是使用两个循环视图,一个是垂直视图,另一个是水平视图。因为我在一个arraylist(水平显示)中获得公司名称。一个arraylist中最左边的列是垂直的,其余的数据在一个arraylist中以行的形式显示。然后在“下一步”按钮上,单击“使用表中的下一组元素重新填充回收视图”,数据以矩阵的形式显示。为了直观地展示我想

我面临着一个设计挑战,我想为一个应用程序设计一个布局,该应用程序以表格的形式显示数据,最左边的第1列是固定的(未更改),最右边的第2列可以在用户按下“下一步”按钮时更改。我最初的方法是使用两个循环视图,一个是垂直视图,另一个是水平视图。因为我在一个arraylist(水平显示)中获得公司名称。一个arraylist中最左边的列是垂直的,其余的数据在一个arraylist中以行的形式显示。然后在“下一步”按钮上,单击“使用表中的下一组元素重新填充回收视图”,数据以矩阵的形式显示。为了直观地展示我想要实现的目标,我设计了一个模型。如果有人知道实现这种布局设计的最佳方法,我非常感谢

公共类TableViewActivity2扩展了AppCompatActivity{
私人RecyclerViewRecyclerViewNames、RecyclerViewDDs;
私人客户adapterGames adapterGames;
私人客户适配器dds adapterOdds;
私有ArrayList字符串列表;
private int draggingView=-1;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u table\u view\u 2);
AppBarHelper.setAppBarText(这个,R.string.title\u activity\u table\u视图);
Toolbar Toolbar=findviewbyd(R.id.Toolbar);
设置支持操作栏(工具栏);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
recyclerViewGames=findViewById(R.id.table\u view\u recycle\u view\u games);
RecycleWebODS=findViewById(R.id.table\u view\u recycle\u view\u赔率);
LinearLayoutManager布局管理器=新的LinearLayoutManager(getApplicationContext(),LinearLayoutManager.VERTICAL,false);
LinearLayoutManager布局管理器2=新的LinearLayoutManager(getApplicationContext(),LinearLayoutManager.VERTICAL,false);
RecycleServiceWgames.setLayoutManager(layoutManager);
RecycleServiceAdds.setLayoutManager(layoutManager2);
stringList=新的ArrayList();
添加(“虚拟”);
添加(“虚拟”);
添加(“虚拟”);
添加(“虚拟”);
添加(“虚拟”);
adapterGames=新的CustomAdapterGames(此为stringList);
adapterOdds=新的CustomAdapterOdds(此为stringList);
recyclerViewGames.setAdapter(adapterGames);
RecycleServiceODS.setAdapter(适配器DDS);
RecycleServiceWgames.addOnScrollListener(scrollListener);
RecycleServiceOdds.addOnScrollListener(scrollListener);
}
private RecyclerView.OnScrollListener scrollListener=new RecyclerView.OnScrollListener(){
@凌驾
CrollStateChanged上的公共无效(RecyclerView RecyclerView,int newState){
super.onScrollStateChanged(recyclerView、newState);
if(recyclerViewGames==recyclerView&&newState==recyclerView.SCROLL\u STATE\u拖动){
拖动视图=1;
}else if(recyclerviewdds==recyclerView&&newState==recyclerView.SCROLL\u STATE\u拖动){
拖动视图=2;
}
}
@凌驾
已填空的公共空间(RecyclerView RecyclerView、int dx、int dy){
super.onScrolled(recyclerView、dx、dy);
如果(draggingView==1&&recyclerView==RecyclerViewNames){
RecycleServiceOdds.scrollBy(dx,dy);
}else if(draggingView==2&&recyclerView==recyclerviewdds){
recyclerViewGames.scrollBy(dx,dy);
}
}
};
}

我面临的问题是,两个RecycleView有时会独立滚动,即使我试图让它们同时滚动

这是基本概念,您可以根据需要设置布局/模型和其他逻辑祝您好运


这是基本概念,您可以根据需要设置布局/模型和其他逻辑祝您好运


第c列和第d列中的数字取决于左列中的选择?解决方案可能是您只使用一个带有
GridLayoutManager
的RecyclerView,并按列排列适配器项=>header1、header2、header3、item11、item12、item12、item13等@LenaBru不,这基本上是一个比较表,用户可以比较来自不同公司的值,这些公司是不相关的。试着从某个角度来看,您只能看到生成该列表所需的1个RecyclerView。如果你能看到,你就明白我的意思了。因为如果你使用超过1个RecyclerView,你将有3个滚动条,每个滚动条都会破坏你的设计。我理解并且我想避免设计问题,我正试图按照设计标准来设计它@HarryTM第c列和第d列中的数字取决于左列中的选择?解决方案可能是您只使用一个带有
GridLayoutManager
的RecyclerView,并将适配器项按列排列=>header1、header2、header3、item11、item12、item12、item13等@LenaBru不,这基本上是一个比较表,用户可以比较来自不同公司的值,这些公司是不相关的。试着从某个角度来看,您只能看到生成该列表所需的1个RecyclerView。如果你能看到,你就明白我的意思了。因为如果你使用超过1个RecyclerView,你将有3个滚动条,每个滚动条都会破坏你的设计。我理解并且我想避免设计问题,我正试图按照设计标准来设计它@HarryTM感谢您的解决方案,但是对于第一个固定列,数据在列中,所以垂直列是可以的。第2-10列为行。因此,在本例中,对于第一个块“item1,item2,item3”,为此行获取的数据在本例中为“1.1”,“2.4”,“2.6”和“6”(您可以在gif图像中看到)。我不理解您的列,请重新措辞。我以为你的问题是同步卷轴
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);
            }
        }
    };


}