Android 单个 activity 中的多个回收视图
Android multiple recycle views in single activity
我面临设计挑战,我想为以 table 形式显示数据的应用程序设计布局,其中最左边的第 1 列固定(未更改),最右边的 2 列可以更改当用户按下下一步按钮时。我最初的方法是使用 2 个回收视图,一个垂直视图和一个水平视图。因为我在一个数组列表(水平显示)中获得公司名称。一个arraylist中最左边的列是垂直的,其余的数据在一个arraylist中,数据按行显示。然后在下一个按钮上单击使用来自 table 的下一组元素重新填充 recycleview,数据采用 矩阵 的形式。为了直观地展示我想要实现的目标,我设计了一个模型。如果有人知道实现此布局设计的最佳方法是什么,我将不胜感激。
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);
}
}
};
}
我面临的问题是两个回收视图有时会独立滚动,即使我试图让它们同时滚动。
这是基本概念,由您来设置layouts/models和其他需要的逻辑,祝您好运!
我面临设计挑战,我想为以 table 形式显示数据的应用程序设计布局,其中最左边的第 1 列固定(未更改),最右边的 2 列可以更改当用户按下下一步按钮时。我最初的方法是使用 2 个回收视图,一个垂直视图和一个水平视图。因为我在一个数组列表(水平显示)中获得公司名称。一个arraylist中最左边的列是垂直的,其余的数据在一个arraylist中,数据按行显示。然后在下一个按钮上单击使用来自 table 的下一组元素重新填充 recycleview,数据采用 矩阵 的形式。为了直观地展示我想要实现的目标,我设计了一个模型。如果有人知道实现此布局设计的最佳方法是什么,我将不胜感激。
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);
}
}
};
}
我面临的问题是两个回收视图有时会独立滚动,即使我试图让它们同时滚动。
这是基本概念,由您来设置layouts/models和其他需要的逻辑,祝您好运!