recyclerview多条目适配器


//左图片
右文字
//右
图片
 
文字
package com.example.myfenghuangxinwenmoni.adapter;

import android.content.Context;
import android.support.v4.app.FragmentActivity;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

import com.bumptech.glide.Glide;
import com.bwie.myfenghuangxinwenmoni.R;
import com.bwie.myfenghuangxinwenmoni.adapter.holder.MyTouTiaoHolder;
import com.bwie.myfenghuangxinwenmoni.adapter.holder.MyTouTiaoHolderYou;
import com.bwie.myfenghuangxinwenmoni.bean.XinWenTouTiaoBean;

import java.util.List;

/**
 * Created by admin on 2018/2/19.
 */

public class MyTouTiaoAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
    private int TOUTIAOLEFT=0;
    private int TOUTIAORIGHT=1;
    private final Context context;
    private final List<XinWenTouTiaoBean.ResultBean.DataBean> list;

    public MyTouTiaoAdapter(Context context, List<XinWenTouTiaoBean.ResultBean.DataBean> list) {
        this.context = context;
        this.list = list;
    }

    @Override
    public int getItemViewType(int position) {
        if (position%2==0){
            return TOUTIAOLEFT;
        }
        return TOUTIAORIGHT;
    }

    @Override
    public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view;
        if (viewType==TOUTIAOLEFT){

            view = LayoutInflater.from(context)
                    .inflate(R.layout.toutiaozuo, parent, false);

            return new MyTouTiaoHolder(view);
        }else {
            view = LayoutInflater.from(context)
                    .inflate(R.layout.toutiaoyou, parent, false);
            return new MyTouTiaoHolderYou(view);
        }
    }

    @Override
    public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
        if (position%2==TOUTIAOLEFT){
            Glide.with(context).load(list.get(position).getThumbnail_pic_s())
                    .into(((MyTouTiaoHolder)holder).image_toutiao);
            ((MyTouTiaoHolder)holder).text_toutiao.setText(list.get(position).getTitle());
        }else {
            Glide.with(context).load(list.get(position).getThumbnail_pic_s())
                    .into(((MyTouTiaoHolderYou)holder).image_tou);
            ((MyTouTiaoHolderYou)holder).text_tou.setText(list.get(position).getTitle());
        }
    }

    @Override
    public int getItemCount() {
        return list.size();
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
好的,让我来为你详细介绍一下如何使用Kotlin在安卓应用中编写一个带有多条目RecyclerView,并且可以根据条目的不同点击跳转到不同的Activity。 首先,我们需要在项目的Gradle文件中添加RecyclerView的依赖项: ``` implementation 'androidx.recyclerview:recyclerview:1.2.1' ``` 接下来,我们创建一个名为`MyAdapter`的Kotlin类,并继承`RecyclerView.Adapter`。在类中,我们需要定义一个内部类`ViewHolder`,该类继承自`RecyclerView.ViewHolder`。在`ViewHolder`类中,我们需要定义多个`View`的成员变量,用于显示列表项的不同信息,并且可以设置点击事件。 ``` class MyAdapter(private val data: List<MyData>) : RecyclerView.Adapter<RecyclerView.ViewHolder>() { companion object { const val TYPE_ONE = 1 const val TYPE_TWO = 2 } override fun getItemViewType(position: Int): Int { return data[position].type } override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder { return when (viewType) { TYPE_ONE -> { val view = LayoutInflater.from(parent.context).inflate(R.layout.list_item_one, parent, false) ViewHolderOne(view) } else -> { val view = LayoutInflater.from(parent.context).inflate(R.layout.list_item_two, parent, false) ViewHolderTwo(view) } } } override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) { when (holder.itemViewType) { TYPE_ONE -> { val viewHolderOne = holder as ViewHolderOne viewHolderOne.textViewOne.text = data[position].textOne viewHolderOne.itemView.setOnClickListener { val intent = Intent(holder.itemView.context, ActivityOne::class.java) holder.itemView.context.startActivity(intent) } } else -> { val viewHolderTwo = holder as ViewHolderTwo viewHolderTwo.textViewTwo.text = data[position].textTwo viewHolderTwo.itemView.setOnClickListener { val intent = Intent(holder.itemView.context, ActivityTwo::class.java) holder.itemView.context.startActivity(intent) } } } } override fun getItemCount(): Int { return data.size } class ViewHolderOne(view: View) : RecyclerView.ViewHolder(view) { val textViewOne: TextView = view.findViewById(R.id.text_view_one) } class ViewHolderTwo(view: View) : RecyclerView.ViewHolder(view) { val textViewTwo: TextView = view.findViewById(R.id.text_view_two) } } ``` 在`MyAdapter`类中,我们需要实现四个方法:`getItemViewType`、`onCreateViewHolder`、`onBindViewHolder`和`getItemCount`。这些方法分别用于返回当前位置的数据类型、创建新的ViewHolder、绑定数据到ViewHolder和返回列表项的数量。 在`getItemViewType`方法中,我们需要根据当前位置的数据类型返回对应的条目类型。 在`onCreateViewHolder`方法中,我们需要创建一个新的ViewHolder,并为其绑定对应条目类型的布局文件。 在`onBindViewHolder`方法中,我们需要根据当前位置的数据类型获取对应的ViewHolder并将数据绑定到ViewHolder的对应View中,并且可以设置View的点击事件,在点击事件中跳转到对应的Activity。 在`getItemCount`方法中,我们需要返回列表项的数量。 最后,在Fragment中,我们可以使用以下代码来设置RecyclerView的布局和适配器: ``` recyclerView.layoutManager = LinearLayoutManager(activity) recyclerView.adapter = MyAdapter(data) ``` 其中,`data`是一个包含多种数据类型的List,包含了我们想要显示的列表项数据。 这样,我们就成功地使用Kotlin编写了一个带有多条目RecyclerView,并且可以根据条目的不同点击跳转到不同的Activity。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值