Android несколько просмотров корзины в одном действии - PullRequest
0 голосов
/ 29 февраля 2020

Я сталкиваюсь с проблемой проектирования, я хочу разработать макет для приложения, которое отображает данные в виде таблицы с фиксированным 1-м левым столбцом (без изменений), 2-й правый столбец можно изменить, когда пользователь нажмет следующую кнопку. Мой первоначальный подход заключается в использовании двух видов рециркуляции, одного по вертикали и по горизонтали. Так как я получаю названия компаний в одном массиве (который отображается горизонтально). Крайний левый столбец в одном массиве, который является вертикальным, а остальные данные в одном массиве, данные отображаются в строках. Затем при следующем нажатии кнопки повторное заполнение повторного просмотра выполняется с использованием следующего набора элементов из таблицы, данные представлены в виде matrix . Чтобы наглядно показать, чего я хочу достичь, я разработал макет. Если у кого-то есть представление о том, что будет лучшим подходом для достижения этого макета, я очень ценю это.

enter image description here

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 прокручиваются независимо друг от друга, даже если я пытался заставить их прокручиваться одновременно.

1 Ответ

2 голосов
/ 02 марта 2020

Вот базовая концепция c, вам нужно установить макеты / модели и другие логи c по мере необходимости, удачи!

Github PO C

enter image description here

...