关于RecyclerView的使用

最近因为毕业设计需要使用RecyclerView,所以在网上查了些资料。在这里记录一下,以后备用。


要使用它,首先需要将支持包导入

它在sdk中的路径:sdk\extras\android\support\v7

并在你的项目中将其作为库文件


记得点一下Apply


创建布局文件(注意写全称)

<android.support.v7.widget.RecyclerView

        android:id="@+id/rv_game_msg"

        android:layout_width="match_parent"

        android:layout_height="match_parent"/>


在activity中首先寻找到RecyclerView控件

interest_game = (RecyclerView) view.findViewById(R.id.rv_game_msg);

创建一个线性布局管理器,并设置方向

LinearLayoutManager msgLayoutManager= new LinearLayoutManager(getActivity());

msgLayoutManager.setOrientation(LinearLayoutManager.VERTICAL);

为Recycler设置布局

interest_game.setLayoutManager(msgLayoutManager);


创建Adapter,重写一些方法。泛型是在该类内部定义的

public class InterestMsgAdapter extends RecyclerView.Adapter<InterestMsgAdapter.ViewHolder>

private List<Message>msgs; //数据源

private OnItemClickListenermlistener; //监听事件

//创建Adapter时,将数据直接传进来

public InterestMsgAdapter(List<Message> msgs) {

        this.msgs = msgs;

}

//重写父类方法,返回数据的长度

@Override

public int getItemCount() {

           returnmsgs.size();

}

//初始化ViewHolder

@Override

public ViewHolder onCreateViewHolder(ViewGroup arg0,int arg1) {

        View view = View.inflate(arg0.getContext(),R.layout.msg_recyclerview_item,null);

        ViewHolder holder = newViewHolder(view, mlistener);

        return holder;

}

//为ViewHolder绑定数据

@Override

public void onBindViewHolder(ViewHolder holder,int arg1) {

   holder.textUsername.setText(msgs.get(arg1).getUserName());

      holder.textMsgTitle.setText(msgs.get(arg1).getMsgTitle());

      holder.textMsgDate.setText(msgs.get(arg1).getMsgDate());

       holder.textMsgAnswerCount.setText(Config.setMsgAnswerCount(msgs.get(  arg1).getMsgAnswerCount()));

          holder.textMsgFlag.setText(Config.setMsgFlag(msgs.get(arg1) .getMsgFlag()));

       //将数据保存在itemViewTag中,以便点击时进行获取

       holder.itemView.setTag(msgs.get(arg1));

    }

内部定义ViewHolder类,继承RecyclerView.ViewHolder,因为RecyclerView没有点击事件。所以我们给Adapter创建一个。

publicstaticclassViewHolderextendsRecyclerView.ViewHolderimplements OnClickListener{

public TextView textUsername, textMsgTitle, textMsgDate,textMsgAnswerCount,textMsgFlag;

private OnItemClickListener listener;

  //在创建Viewholder时,绑定各个控件

public ViewHolder(View arg0,OnItemClickListener listener) {

super(arg0);

this.listener = listener;

arg0.setOnClickListener(this);

textUsername = (TextView)arg0.findViewById(R.id.tv_msgitem_username);

textMsgTitle = (TextView)arg0.findViewById(R.id.tv_msgitem_msgtitle);

         textMsgDate = (TextView)arg0.findViewById(R.id.tv_msgitem_msgdate);

         textMsgAnswerCount= (TextView) arg0.findViewById(R.id.tv_msgitem_msganswercount);

         textMsgFlag = (TextView)arg0.findViewById(R.id.tv_msgitem_msgflag);

}

  //点击事件

@SuppressWarnings("deprecation")

@Override

public void onClick(View v) {

if (listener !=null) {

listener.onItemClick(v, getPosition(),(Message) v.getTag());

}

}

}

/**

 *自定义的模仿ListViewOnItemClickListener,开放了viewpositionmessage三个参数

*@author Administrator

*/

public staticinterface OnItemClickListener {

public void onItemClick(View view,int postion, Message msg);

}

//将接口暴露出去

public void setOnItemClickListener(OnItemClickListener listener) {

mlistener = listener;

}

在Activity中创建Adapter对象,并将其设置到Recycler中

InterestMsgAdapter msgAdapter =new InterestMsgAdapter(msgs);

interest_game.setAdapter(msgAdapter);

为Adapter创建监听

msgAdapter.setOnItemClickListener(new RecylerViewClick());

自己创建一个class文件,实现监听的借口

class RecylerViewClickimplements InterestMsgAdapter.OnItemClickListener {

@Override

public void onItemClick(View view,int postion, Message msg) {

Intentintent = newIntent(getActivity(), AnswerActivity.class);

intent.putExtra(Config.KEY_EXTRA_MESSAGE,msg);

startActivity(intent);

}

}


-----------------------------------------------------------------------------END----------------------------------------------------------------------







  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值