Java 如何在RecyclerView中使用一些ListView方法?

Java 如何在RecyclerView中使用一些ListView方法?,java,android,android-listview,Java,Android,Android Listview,我用于显示和排序级别。因为ListView的速度很慢,所以我没有使用ListView和RecyclerView 因此,我需要一些ListView方法,这些方法有setCrollPosition和SetOnItemSelect 我的RecyclerView适配器代码: public class levels_card_adapter extends RecyclerView.Adapter<levels_card_adapter.ViewHolder> { private st

我用于显示和排序级别。因为ListView的速度很慢,所以我没有使用ListView和RecyclerView
因此,我需要一些
ListView
方法,这些方法有
setCrollPosition
SetOnItemSelect

我的RecyclerView适配器代码:

public class levels_card_adapter extends
    RecyclerView.Adapter<levels_card_adapter.ViewHolder> {
private static String[] adapter_levels_number;

public levels_card_adapter(String[] adapter_levels_num_data) {
    adapter_levels_number = adapter_levels_num_data;



}

@Override
public levels_card_adapter.ViewHolder onCreateViewHolder(ViewGroup parent,
                                                         int viewType) {

    View itemLayoutView = LayoutInflater.from(parent.getContext()).inflate(
            R.layout.levels_recycler_layout, null);


    ViewHolder viewHolder = new ViewHolder(itemLayoutView);
    return viewHolder;
}

@Override
public void onBindViewHolder(ViewHolder viewHolder, int position) {

    viewHolder.adapter_levels_text.setText(adapter_levels_number[position].toString());

    viewHolder.adapter_levels_version = adapter_levels_number[position];



}

@Override
public int getItemCount() {
    return adapter_levels_number.length;
}

public static class ViewHolder extends RecyclerView.ViewHolder {

    public TextView adapter_levels_text;

    public String adapter_levels_version;


    public ViewHolder(View itemLayoutView) {
        super(itemLayoutView);

        adapter_levels_text = (TextView) itemLayoutView
                .findViewById(R.id.level_thumnail_text);

        itemLayoutView.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {

                Intent question_page_intent = new Intent(v.getContext(), com.tellfa.braingame.activities.question_Page.class);
                v.getContext().startActivity(question_page_intent);

            }
        });

    }

}
我如何制作此方法?
这对我来说非常重要

和呢

公共void setScrollX(int值)

设置视图的水平滚动位置

RecyclerView.OnItemTouchListener

OnItemTouchListener允许应用程序拦截触摸 RecyclerView的视图层次结构级别上正在进行的事件 在这些触摸事件被考虑用于RecyclerView之前 滚动行为


我已经实现了类似的东西,使用RecyclerView滚动的唯一方法是手动计算位置并使用您正在使用的LayoutManager滚动

我在适配器中使用了以下两种方法来实现这一点,如果您发现这有助于您更好地使用它:

public void scrollToPosition(int positionToScrollTo) {
    LinearLayoutManager layoutManager = null;
    try {
        layoutManager = (LinearLayoutManager) mRecyclerView.getLayoutManager();
    } catch (ClassCastException e) {
        log.d("You should pass a recyclerview with a layoutmanayer" +
                "that inherits from LinearLayoutManager");
        return;
    }
    int firstVisibleItemPosition = layoutManager.findFirstVisibleItemPosition();
    View firstVisibleItemView = layoutManager.findViewByPosition(firstVisibleItemPosition);
    int firstViewHeight = firstVisibleItemView.getHeight();
    int scrollOffsetVertical = firstViewHeight * positionToScrollTo;
    mRecyclerView.scrollBy(0, scrollOffsetVertical);
}

public void smoothScrollToPosition(int positionToSCroll) {
    for (int i = 0;i < positionToSCroll; i++) {
        scrollToPosition(i);
    }

}
public void scrollToPosition(intpositiontoScrollTo){
LinearLayoutManager布局管理器=空;
试一试{
layoutManager=(LinearLayoutManager)mRecyclerView.getLayoutManager();
}catch(ClassCastException e){
log.d(“您应该通过带有layoutmanayer的recyclerview”+
“从LinearLayoutManager继承的”);
返回;
}
int firstVisibleItemPosition=layoutManager.findFirstVisibleItemPosition();
View firstVisibleItemView=layoutManager.findViewByPosition(firstVisibleItemPosition);
int firstViewHeight=firstVisibleItemView.getHeight();
int scrollOffsetVertical=第一视图高度*位置到滚动;
mRecyclerView.scrollBy(0,scrollOffsetVertical);
}
公共位置(内部位置到滚动){
对于(int i=0;i

应该有更好的方法,但这对我很有效,希望能有所帮助,祝你好运…

谢谢你,亲爱的朋友。你能把上面的语句与我的代码协调起来并给我吗?它们应该可以工作,只要在你的RecyclerAdapter中创建一个名为mRecyclerView的RecyclerView实例,并将这些方法放在你的RecyclerAdapter中,然后测试这些方法。。。
public void scrollToPosition(int positionToScrollTo) {
    LinearLayoutManager layoutManager = null;
    try {
        layoutManager = (LinearLayoutManager) mRecyclerView.getLayoutManager();
    } catch (ClassCastException e) {
        log.d("You should pass a recyclerview with a layoutmanayer" +
                "that inherits from LinearLayoutManager");
        return;
    }
    int firstVisibleItemPosition = layoutManager.findFirstVisibleItemPosition();
    View firstVisibleItemView = layoutManager.findViewByPosition(firstVisibleItemPosition);
    int firstViewHeight = firstVisibleItemView.getHeight();
    int scrollOffsetVertical = firstViewHeight * positionToScrollTo;
    mRecyclerView.scrollBy(0, scrollOffsetVertical);
}

public void smoothScrollToPosition(int positionToSCroll) {
    for (int i = 0;i < positionToSCroll; i++) {
        scrollToPosition(i);
    }

}