SnapHelper不适用于RecyclerView

时间:2020-05-24 22:15:39

标签: java android xml android-recyclerview

当我尝试使用RecyclerView像基本的三星Clock App计时器中那样制作时间选择器时,我遇到了问题,我已经完成了所有工作,并且想要将每个元素都捕捉到屏幕中央,但是当我尝试将SnapHelper添加到我的RecyclerViews中是行不通的。这是我的MainActivity。我添加了所有RecyclerViews以前的适配器。

public class MainActivity extends AppCompatActivity {

    RecyclerView hours;
    RecyclerView minutes;
    RecyclerView seconds;
    RecyclerAdapter recyclerAdapter;
    RecyclerAdapter recyclerAdapter2;
    RecyclerAdapter recyclerAdapter3;
    List<HourStr> hoursList = new ArrayList<>();
    List<HourStr> minutesList = new ArrayList<>();
    List<HourStr> secondsList = new ArrayList<>();
    SnapHelper snapHelper = new LinearSnapHelper();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        hours = findViewById(R.id.recycler_1);
        minutes = findViewById(R.id.recycler_2);
        seconds = findViewById(R.id.recycler_3);
        hoursList = generateHour();
        minutesList = generateMinSec();
        secondsList = generateMinSec();
        recyclerAdapter = new RecyclerAdapter(hoursList);
        recyclerAdapter2 = new RecyclerAdapter(minutesList);
        recyclerAdapter3 = new RecyclerAdapter(secondsList);

        LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false);
        LinearLayoutManager linearLayoutManager2 = new LinearLayoutManager(this);
        LinearLayoutManager linearLayoutManager3 = new LinearLayoutManager(this);
        hours.setAdapter(recyclerAdapter);
        hours.setLayoutManager(linearLayoutManager);
        hours.getLayoutManager().scrollToPosition(Integer.MAX_VALUE / 2 - 24);
        minutes.setAdapter(recyclerAdapter2);
        minutes.setLayoutManager(linearLayoutManager2);
        minutes.getLayoutManager().scrollToPosition(Integer.MAX_VALUE / 2 - 4);
        seconds.setAdapter(recyclerAdapter3);
        seconds.setLayoutManager(linearLayoutManager3);
        seconds.getLayoutManager().scrollToPosition(Integer.MAX_VALUE / 2 - 4);
        snapHelper.attachToRecyclerView(hours);
        snapHelper.attachToRecyclerView(minutes);
        snapHelper.attachToRecyclerView(seconds);
    }


    private List<HourStr> generateHour() {
        List<HourStr> messages = new ArrayList<>();
        messages.add(new HourStr("00"));
        messages.add(new HourStr("01"));
        messages.add(new HourStr("02"));
        messages.add(new HourStr("03")); //to ("99")
        return messages;
    }

    private List<HourStr> generateMinSec() {
        List<HourStr> messages = new ArrayList<>();
        messages.add(new HourStr("00"));
        messages.add(new HourStr("01"));
        messages.add(new HourStr("02"));
        messages.add(new HourStr("03")); //to ("59")
        return messages;
    }
}

在GitHub上找到项目: SnappedRecycler

0 个答案:

没有答案
相关问题