RecyclerView使用
2021/8/31 23:36:37
本文主要是介绍RecyclerView使用,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
activity_luncher
<?xml version="1.0" encoding="utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".ActivityLuncher"> <androidx.recyclerview.widget.RecyclerView android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/linearRv" android:dividerHeight="10dp"/> </androidx.constraintlayout.widget.ConstraintLayout>` item_2_layout `<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@android:color/holo_blue_dark"> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/item_2_tv" android:gravity="center" android:padding="10dp"/> </LinearLayout>
item_layout
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content"> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/item_tv" android:gravity="center" android:padding="10dp"/> </LinearLayout>
MainActivity
package com.example.luncherdemo1; import androidx.appcompat.app.AppCompatActivity; import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; import androidx.recyclerview.widget.StaggeredGridLayoutManager; import android.os.Bundle; import android.widget.LinearLayout; import java.util.ArrayList; public class ActivityLuncher extends AppCompatActivity { private ArrayList<String> mDatas = new ArrayList<>(); private void initDatas(){ for (int i=1;i<=100;i++){ mDatas.add("第"+i+"个item"); } } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_luncher); initDatas(); RecyclerView mRv = findViewById(R.id.linearRv); //网格 // GridLayoutManager gridLayoutManager=new GridLayoutManager(this,8); // gridLayoutManager.setOrientation(LinearLayoutManager.HORIZONTAL); // mRv.setLayoutManager(gridLayoutManager); //瀑布流 StaggeredGridLayoutManager staggeredGridLayoutManager=new StaggeredGridLayoutManager(5,StaggeredGridLayoutManager.HORIZONTAL); staggeredGridLayoutManager.setOrientation(LinearLayoutManager.VERTICAL); mRv.setLayoutManager(staggeredGridLayoutManager); MyRecyclerAdapter adapter = new MyRecyclerAdapter(this,mDatas); mRv.setAdapter(adapter); } }
MyRecyclerAdatper
package com.example.luncherdemo1; import android.content.Context; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.HorizontalScrollView; import android.widget.TextView; import android.widget.Toast; import androidx.annotation.NonNull; import androidx.recyclerview.widget.RecyclerView; import java.util.ArrayList; public class MyRecyclerAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> { private Context mContext; private ArrayList<String> mDatas; public MyRecyclerAdapter(Context context, ArrayList<String> datas){ mContext = context; mDatas = datas; } @Override public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { // View itemView = LayoutInflater.from(mContext).inflate(R.layout.item_layout,parent,false); LayoutInflater inflater = LayoutInflater.from(mContext); if (viewType==ITEM_TYPE.ITEM_TYPE_ITEM.ordinal()){ return new NormalHolder(inflater.inflate(R.layout.item_layout,parent,false)); } return new SectionHolder(inflater.inflate(R.layout.item_2_layout,parent,false)); } @Override public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) { if (holder instanceof SectionHolder){ SectionHolder sectionHolder = (SectionHolder) holder; sectionHolder.mSectionTV.setText("第"+((position/SECTION_ITEM_NUM)+1)+"组"); }else if (holder instanceof NormalHolder){ NormalHolder normalHolder=(NormalHolder) holder; normalHolder.mTV.setText(mDatas.get(position)); } } public static enum ITEM_TYPE{ ITEM_TYPE_SECTION, ITEM_TYPE_ITEM; } private int SECTION_ITEM_NUM = 10; @Override public int getItemViewType(int position) { if (position%SECTION_ITEM_NUM==0){ return ITEM_TYPE.ITEM_TYPE_SECTION.ordinal(); } return ITEM_TYPE.ITEM_TYPE_ITEM.ordinal(); } @Override public int getItemCount() { return mDatas.size(); } class NormalHolder extends RecyclerView.ViewHolder{ TextView mTV; public NormalHolder(@NonNull View itemView) { super(itemView); mTV = (TextView) itemView.findViewById(R.id.item_tv); mTV.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Toast.makeText(mContext,mTV.getText(), Toast.LENGTH_SHORT).show(); } }); } } class SectionHolder extends RecyclerView.ViewHolder{ TextView mSectionTV; public SectionHolder(@NonNull View itemView) { super(itemView); mSectionTV = (TextView) itemView.findViewById(R.id.item_2_tv); } } }
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.luncherdemo1"> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/Theme.LuncherDemo"> <activity android:name=".ActivityLuncher" android:exported="true"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>
这篇关于RecyclerView使用的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2025-01-09CMS内容管理系统是什么?如何选择适合你的平台?
- 2025-01-08CCPM如何缩短项目周期并降低风险?
- 2025-01-08Omnivore 替代品 Readeck 安装与使用教程
- 2025-01-07Cursor 收费太贵?3分钟教你接入超低价 DeepSeek-V3,代码质量逼近 Claude 3.5
- 2025-01-06PingCAP 连续两年入选 Gartner 云数据库管理系统魔力象限“荣誉提及”
- 2025-01-05Easysearch 可搜索快照功能,看这篇就够了
- 2025-01-04BOT+EPC模式在基础设施项目中的应用与优势
- 2025-01-03用LangChain构建会检索和搜索的智能聊天机器人指南
- 2025-01-03图像文字理解,OCR、大模型还是多模态模型?PalliGema2在QLoRA技术上的微调与应用
- 2025-01-03混合搜索:用LanceDB实现语义和关键词结合的搜索技术(应用于实际项目)