RecyclerView基礎寫法簡單實現
一、新增依賴
dependencies {
compile 'com.android.support:recyclerview-v7:23.1.1'
}
點選右上角Sync Now,此時如果不報紅,直接跳過下面步驟,可以開始編寫RecyclerView控制元件了。
但,如果點選了右上角的Sync Now,卻還是出現報紅不用怕
修改後
點選右上角Sync Now
二、定義本地資料來源Menu類,為RecyclerView提供資料來源。
Menu.javapackage com.administrator.taolvyou.entity; /** * 資料來源 * Created by Administrator on 2018/5/8. */ public class Menu { public int icon; public String menuName; public Menu(int icon, String menuName) { this.icon = icon; this.menuName = menuName; } }
三、定義DataUtil工具類,將資料來源轉換成集合形式儲存並返回該集合物件。
DataUtil.java
package com.administrator.taolvyou.util; import com.administrator.taolvyou.entity.Menu; import java.util.ArrayList; import java.util.List; /** * 資料來源 * Created by Administrator on 2018/5/8. */ public class DataUtil { /** * 主選單 * @param icons * @param names * @return */ public static List<Menu> getMainMenus(int icons[],String names[]){//導包匯入我們剛才建立的實體類的包 List<Menu> menus = new ArrayList<>(); for(int i=0;i<icons.length;i++){ Menu menu = new Menu(icons[i],names[i]); menus.add(menu); } return menus; } }
四、在strings檔案中定義陣列資料
<resources> <string name="app_name">TaoLvYou</string> <string-array name="main_menu"> <item>飛機票</item> <item>住酒店</item> <item>去旅遊</item> <item>周邊遊</item> <item>買門票</item> <item>火車票</item> <item>汽車票</item> <item>領里程</item> </string-array> </resources>
五、在fragment_main中引入該RecyelerView控制元件
fragment.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent"
>
<android.support.v7.widget.RecyclerView
android:id="@+id/recycleview_main_menu"
android:layout_width="match_parent"
android:layout_height="wrap_content">
</android.support.v7.widget.RecyclerView>
</RelativeLayout>
六、為資料與檢視之間定義介面卡MainMenuAdapter
MainMenuAdapter.java
package com.administrator.taolvyou.adapter;
import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import com.administrator.taolvyou.R;
import com.administrator.taolvyou.entity.Menu;
import java.util.List;
/**
* Created by Administrator on 2018/5/8.
*/
public class MainMenuAdapter extends RecyclerView.Adapter<MainMenuAdapter.MainMenuViewHolder> {
protected Context context;
protected List<Menu> menus;
class MainMenuViewHolder extends RecyclerView.ViewHolder{
public ImageView mImgMenuIcon;
public TextView mTxtMenuName;
public MainMenuViewHolder(View itemView) {
super(itemView);
mImgMenuIcon=(ImageView) itemView.findViewById(R.id.img_menu_icon);
mTxtMenuName=(TextView) itemView.findViewById(R.id.txt_menu_name);
}
}
public MainMenuAdapter(Context context, List<Menu> menus){
this.context=context;
this.menus=menus;
}
@Override
public MainMenuViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
return new MainMenuViewHolder(LayoutInflater.from(context).inflate(R.layout.item_main_menu,null));//將佈局渲染成一個檢視的形式
}
@Override
public void onBindViewHolder(MainMenuViewHolder holder, int position) {
Menu menu=menus.get(position);//返還每一個選單的物件
holder.mImgMenuIcon.setImageResource(menu.icon);
holder.mTxtMenuName.setText(menu.menuName);
}
@Override
public int getItemCount() {
return null!=menus?menus.size():0;
}
}
七、在主介面檢視中使用該佈局
MainFragment.java
package com.administrator.taolvyou.fragment;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.support.v7.widget.GridLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import com.administrator.taolvyou.R;
import com.administrator.taolvyou.adapter.MainMenuAdapter;
import com.administrator.taolvyou.util.DataUtil;
/**
* 主介面檢視
*/
public class MainFragment extends Fragment{
protected RecyclerView mRecyclerViewMenu;
//選單圖示
protected int [] menuIons={R.mipmap.menu_airport,R.mipmap.menu_car
,R.mipmap.menu_course,R.mipmap.menu_hatol,
R.mipmap.menu_nearby, R.mipmap.menu_ticket,
R.mipmap.menu_train,R.mipmap.menu_trav};
String[] menus;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment_main,container,false);
}
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
menus=this.getActivity().getResources().getStringArray(R.array.main_menu);//從string檔案中,將陣列資料拿出來
mRecyclerViewMenu = (RecyclerView) getView().findViewById(R.id.recycleview_main_menu);
//設定RecyclerView佈局的樣式
mRecyclerViewMenu.setLayoutManager(new GridLayoutManager(getActivity(),4));//第一個引數是context物件,第二個引數是列數
//另有線性佈局寫法可另行百度
//選單
MainMenuAdapter mainMenuAdapter = new MainMenuAdapter(getActivity(), DataUtil.getMainMenus(menuIons,menus));
mRecyclerViewMenu.setAdapter(mainMenuAdapter);
}
}
執行效果:
專案Demo下載:
相關推薦
RecyclerView基礎寫法簡單實現
一、新增依賴dependencies { compile 'com.android.support:recyclerview-v7:23.1.1' }點選右上角Sync Now,此時如果不報紅,直接跳過下面步驟,可以開始編寫RecyclerView控制元件了。但,
Linux C/C++網路程式設計基礎 TCP簡單實現
簡單的linux下socket程式設計,分別基於TCP協議實現的簡單程式linux下socket程式設計可以概括為以下幾個函式的運用:socket()bind()listen()connect()accept()read()write()close()函式server端/*
Android Recyclerview粘性頭部 簡單實現
引言 最近好久沒寫程式碼了,都是一直在維護之前的專案,由於工作的需要,學習重心最近放在了Js的學習上。以至於,我有個需求要寫個Recyclerview列表,我竟然一下子忘記怎麼寫了,我只能去網上搜索相關的使用方法,後來才覺得寫筆記的重要性,一方面自己看自己寫的
Java lambda寫法簡單實現
眾所周知,java8支援lambda表示式,常見的一些操作都可以通過lamb
javaSE基礎之 LinkedList的底層簡單實現
http 簡單測試 void nis () gen png mage pre 這裏貼上LinkedList底層的簡單實現 package com.yck.mylinkedlist; public class Node { private Node prev
Struts2基礎-1- 簡單java類實現Action控制器
tex rep 初始 font 實例 fig 一個 返回結果 action Strut2中,Action可以不繼承任何特殊的類或不實現任何特殊的接口,可以只編寫一個普通的Java類作為Action類,只要該類含有一個返回字符串的無參的public方法即可!實際開發中,通常繼
安卓音、視頻播放功能簡單實現 --Android基礎
ket undle 顯示 perm err efault 繼續 bre mpat 1、音樂播放功能 關鍵代碼: MainActivity.java: package thonlon.example.cn.musicdemowithoutservice;import
深度學習理論基礎4-簡單邏輯電路的感知機實現
接下來我們小試牛刀,為感知機設定權重及閥值,實現一些簡單的邏輯電路。 ----------------------------------------------------與門--------------------------------------------------
Recyclerview最最簡單實現水平分頁GridView效果
前言 昨天UI妹子給了給需求,展示水平分頁效果,而且第二頁要預設顯示一部分,提示使用者水平可以滑動,先上效果圖: 很明顯橫向滑動的分頁,第一反應就是使用ViewPager,畢竟只要通過自定義ViewPager,實現這個效果還是很容易,但是實際中問題時,當
Tablayout+Viewpager+recyclerview簡單實現
//小菜鳥奮鬥中 package com.tablayoutviewpagerrecyclerview.tablayoutviewpagerrecyclerview; import android.os.Bundle; import android.support.des
C#基礎系列——委託實現簡單設計模式
前言:上一篇介紹了下多執行緒的相關知識:C#基礎系列——多執行緒的常見用法詳解,裡面就提到了委託變數。這篇簡單介紹下委託的使用。當然啦,園子裡面很多介紹委託的文章都會說道:委託和事件的概念就像一道坎,過了這個檻的人,覺得真是太容易了,而沒有過去的人每次見到委託和事件就覺得心裡發慌。確實這東西就像最開始學C語言
Android零基礎入門第71節:CardView簡單實現卡片式佈局
還記得我們一共學過了多少UI控制元件了嗎?都掌握的怎麼樣啊。 安卓中一些常用控制元件學習得差不多了,今天再來學習一個新的控制元件CardView,在實際開發中也有非常高的地位。 一、CardView簡介 CardView是Androi
MVP簡單實現OKHttp+recyclerview+springview
需要新增的依賴 compile 'com.android.support:recyclerview-v7:25.3.1' compile 'com.liaoinstan.springview:library:1.2.6' compile 'com.squareup.okht
salesforce零基礎學習(九十三)Email To Case的簡單實現
.html 比較 html isn email fir 針對 verify except Salesforce提供了標準的功能來實現通過Email 創建 Case。我們可以設置指定的路由的地址,指定條件的郵件會自動生成到目標salesforce系統的Case數據。Sales
Mycat1.6基礎用法之--簡單實現mysql高可用
cat /app/mycat/conf/server.xml <user name="root" defaultAccou
網頁內容解析簡單實現
return end pro spa del crawl 測試 節點 nod 概述 在日常開發工作中,有時候我們需要去一些網站上抓取數據,要想抓取數據,就必須先了解網頁結構,根據具體的網頁結構,編寫對應的程序對數據進行采集。最近剛好有一個需求,需要更新收貨地址
侵入式單鏈表的簡單實現
== uri new cast amp typedef all 內存地址 類型 通常情況下,單鏈表的定義是這樣子滴, typedef struct foo_s { int data; struct foo_s
侵入式單鏈表的簡單實現(cont)
con ima -o error alt set clas eric int 前一節介紹的侵入式鏈表的實現的封裝性做得不好,因為會讓消費者foo.c直接使用宏container_of()。這一節對list的定義做了一下改進,如下所示: typedef struct lis
A*算法的理解與簡單實現
update for port 移動 ont 效率 print 估算 net 基本定義 一種尋路算法,特點是:啟發式的,效率高,基本思路比較簡單。 用途 尋路。在指定的地圖上,考慮到地圖上的移動代價,找到最優的路徑。 核心概念 開表,閉表,估值函數。 開表 開表,記錄了當前
python基礎一 ------簡單隊列用作歷史記錄
但是 猜字遊戲 history 無限制 tor except exc rom [] #需求:測試歷史記錄,一個猜字遊戲,能在重新進入遊戲時查看輸入歷史# 1 #-*-coding:utf-8-*- 2 from random import randint 3 fro