在RecyclerView中选择CardView的位置,并在RecyclerView中更改片段 [英] Select position of CardView in RecyclerView and Change Fragment in RecyclerView

查看:88
本文介绍了在RecyclerView中选择CardView的位置,并在RecyclerView中更改片段的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

*简单的部分*

此刻,我已经在RecyclerView中设置了CardView.

At the moment I have set up a CardView inside a RecyclerView.

我需要做的是将第二张卡片视图的颜色更改为黄色,而第三张卡片视图的颜色更改为红色(此刻它们均为绿色).我也希望第一张卡片视图保持绿色.

What i need to do is to change the color of the 2nd cardview to yellow, and the 3rd cardview to red (At the moment they are all green). Also i want the first cardview to remain green.

*硬部件*

每当我单击RecyclerView中的CardView之一时,我还需要能够切换到另一个片段.所以基本上是在我的RecyclerAdapter中切换片段.

What i also need, is to be able to switch to another fragment, whenever i click on one of the CardViews in the RecyclerView. So basically to switch fragments in my RecyclerAdapter.

我的RecyclerAdapter Java类如下:

My RecyclerAdapter Java class is as follows:

先谢谢!!

public class RecyclerAdapter extends RecyclerView.Adapter<RecyclerAdapter.RecyclerViewHolder> {

Fragment fragment;

private DataTabelFragment dataTabelFragment;

private static String[] title = new String[]{"D42DB2", "B42DC6", "CURRENTLY NOT AVAILABLE"};

private static String[] beskrivelse = new String[]{"Temperatur & Humdity Sensorer", "Light Sensorer", ""};


@Override
public RecyclerViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {

    System.out.println( "DU ER KOMMET SÅ LANGT HABEBEEEEEEEEE" );

    View view = LayoutInflater.from( viewGroup.getContext() ).inflate( R.layout.fragment_card_view_tabel, viewGroup, false );

    viewGroup.setOnClickListener( new View.OnClickListener() {

        @Override
        public void onClick(View view) {

        }
    } );

    return new RecyclerViewHolder( view );
}

@Override
public void onBindViewHolder(RecyclerViewHolder recyclerViewHolder, int i) {

    recyclerViewHolder.mBeskrivelse.setText( beskrivelse[i] );
    recyclerViewHolder.mTitle.setText( title[i] );

    recyclerViewHolder.cardView.setCardBackgroundColor( Color.parseColor( "#FFCE54" ) );


    //recyclerViewHolder.cardView.setCardBackgroundColor( Color.parseColor( "#FFCE54" ) );

}

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

class RecyclerViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {

    private TextView mBeskrivelse;
    private TextView mTitle;
    private CardView cardView;

    public RecyclerViewHolder(View itemView) {
        super( itemView );

        mBeskrivelse = (TextView) itemView.findViewById( R.id.item_beskrivelse );
        mTitle = (TextView) itemView.findViewById( R.id.item_title );
        cardView = (CardView) itemView.findViewById( R.id.card_view );
        itemView.setOnClickListener( this );

    }

    @Override
    public void onClick(View v) {

        Toast.makeText( itemView.getContext(), "HEJ DU HAR TRYKKET PÅ KNAP", Toast.LENGTH_LONG ).show();

        //((FragmentActivity) itemView.getContext()).getSupportFragmentManager().beginTransaction().replace( R.id.recycler_view, new DataTabelFragment() ).commit();


    }

  }

}

推荐答案

对于第一部分,您可以执行与标题相同的操作.添加与此类似的数组.

For the first part, you can just do the same thing you do with the titles. Add an array similar to this.

private static String[] colors = new String[]{"#FFCE54", "#57ad48", "#c93e3c"};

然后像这样访问它.

recyclerViewHolder.cardView.setCardBackgroundColor( Color.parseColor( colors[i] ) );

您还可以像这样在onBindViewHolder中设置onClickListener.

You could also set the onClickListener inside the onBindViewHolder like this.

recyclerViewHolder.setOnClickListener(new View.OnClickListener() {       
    @Override
    public void onClick(View view) {
        getActivity().getSupportFragmentManager().beginTransaction().replace( R.id.recycler_view, new DataTabelFragment() ).commit();
    }
});

或将其作为onItemTouchListener添加到您的RecyclerView.

Or add it as an onItemTouchListener to your RecyclerView.

mRecyclerView.addOnItemTouchListener(new RecyclerView.OnItemTouchListener() {
        @Override
        public boolean onInterceptTouchEvent(RecyclerView rv, MotionEvent e) {
            return false;
        }

        @Override
        public void onTouchEvent(RecyclerView rv, MotionEvent e) {
          getActivity().getSupportFragmentManager().beginTransaction().replace( R.id.recycler_view, new DataTabelFragment() ).commit();
        }

        @Override
        public void onRequestDisallowInterceptTouchEvent(boolean disallowIntercept) {

        }
    });

这篇关于在RecyclerView中选择CardView的位置,并在RecyclerView中更改片段的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆