1. 程式人生 > >[2017-7-26]Android Learning Day4

[2017-7-26]Android Learning Day4

學習 res 單獨 util odi font vertical etc 過程

RecycleView

恩,學習Fragment的過程中的一個小實踐居然用到了RecycleView!坑了我好久有木有!!好氣哦,從昨晚到現在。(現在也還是一頭霧水,不過照搬也會用了)

這是第一版的代碼,都寫在 MainActivity.java 裏了。

 1 public class MainActivity extends AppCompatActivity {
 2 
 3     private RecyclerView rv;
 4     private ArrayList<String> datas = new ArrayList<String>();
5 6 @Override 7 protected void onCreate(Bundle savedInstanceState) { 8 super.onCreate(savedInstanceState); 9 10 rv = new RecyclerView(this); 11 12 createData(datas); 13 14 setContentView(rv); 15 16 rv.setLayoutManager(new LinearLayoutManager(this
)); 17 18 rv.setAdapter(new RecyclerView.Adapter() { 19 20 //重寫你想要的RecyclerView中的每一項所含有的內容 21 class myViewHolder extends RecyclerView.ViewHolder { 22 private TextView tv; 23 24 public myViewHolder(TextView itemView) { 25 super
(itemView); 26 tv = itemView; 27 tv.setTextSize(28); 28 } 29 30 public TextView getTv() { 31 return tv; 32 } 33 } 34 35 //創建RecycleView中每一項的內容 36 @Override 37 public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 38 return new myViewHolder(new TextView(parent.getContext())); 39 } 40 41 //創建的的每一項與布局綁定並設置數據 42 @Override 43 public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { 44 ((myViewHolder)holder).getTv().setText(datas.get(position)); 45 } 46 47 //獲取RecycleView的長度 48 @Override 49 public int getItemCount() { 50 System.out.println("--------------------------------------->"+datas.size()); 51 return datas.size(); 52 } 53 }); 54 } 55 56 public void createData(ArrayList<String> data) { 57 58 for(char i=‘A‘;i<=‘Z‘;i++) 59 { 60 data.add(String.valueOf(i)); 61 } 62 } 63 64 }

接下裏是升級後的,把Adapter單獨提出來寫,也是最重要的部分!MyAdapter.java

 1 package com.liwenchi.learnrv;
 2 
 3 import android.support.v7.widget.RecyclerView;
 4 import android.view.LayoutInflater;
 5 import android.view.View;
 6 import android.view.ViewGroup;
 7 import android.widget.TextView;
 8 
 9 /**
10  * Created by VULCAN on 2017/7/26.
11  */
12 class MyAdapter extends RecyclerView.Adapter {
13 
14     private CellData[] data = new CellData[]{new CellData("為什麽Django框架仍然統治著Python開發世界","因為它真的很厲害"),new CellData("用Python分析購物籃","一種有用的技術成為關聯分析...")};
15 
16     //重寫你想要的RecyclerView中的每一項所含有的內容
17     class myViewHolder extends RecyclerView.ViewHolder {
18         private View root;
19         private TextView tvTitle;
20         private TextView tvContent;
21 
22         public myViewHolder(View root) {
23             super(root);
24 
25             tvTitle = (TextView) root.findViewById(R.id.tvTitle);
26             tvContent = (TextView) root.findViewById(R.id.tvContent);
27         }
28 
29         public TextView getTvTitle() {
30             return tvTitle;
31         }
32 
33         public TextView getTvContent() {
34             return tvContent;
35         }
36     }
37 
38     //創建RecycleView中每一項的內容
39     @Override
40     public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
41         //創建一個布局解釋器
42         return new myViewHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.list_cell, null));
43     }
44 
45     //創建的的每一項與布局綁定並設置數據
46     @Override
47     public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
48         ((myViewHolder) holder).getTvTitle().setText(data[position].title);
49         ((myViewHolder) holder).getTvContent().setText(data[position].content);
50     }
51 
52     //獲取RecycleView的長度
53     @Override
54     public int getItemCount() {
55         return data.length;
56     }
57 }

MainActivity.java

 1 package com.liwenchi.learnrv;
 2 
 3 import android.support.v7.app.AppCompatActivity;
 4 import android.os.Bundle;
 5 import android.support.v7.widget.LinearLayoutManager;
 6 import android.support.v7.widget.RecyclerView;
 7 
 8 import java.util.ArrayList;
 9 public class MainActivity extends AppCompatActivity {
10 
11     private RecyclerView rv;
12 
13     private ArrayList<String> datas = new ArrayList<String>();
14 
15     @Override
16     protected void onCreate(Bundle savedInstanceState) {
17         super.onCreate(savedInstanceState);
18 
19         rv = new RecyclerView(this);
20 
21         createData(datas);
22 
23         setContentView(rv);
24 
25         rv.setLayoutManager(new LinearLayoutManager(this));
26 
27         rv.setAdapter(new MyAdapter());
28     }
29 
30     public void createData(ArrayList<String> data) {
31 
32         for(char i=‘A‘;i<=‘Z‘;i++)
33         {
34             data.add(String.valueOf(i));
35         }
36     }
37 }

CellData.java

 1 public class CellData {
 2 
 3     public CellData(String title, String content) {
 4         this.title = title;
 5         this.content = content;
 6     }
 7 
 8     String title = "title";
 9     String content = "Content";
10 
11 }

list_cell.xml

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 3     android:orientation="vertical"
 4     android:layout_width="match_parent"
 5     android:layout_height="match_parent">
 6 
 7     <TextView
 8         android:id="@+id/tvTitle"
 9         android:layout_width="match_parent"
10         android:layout_height="wrap_content"
11         android:textAppearance="?android:attr/textAppearance"
12         android:text="標題" />
13 
14     <TextView
15         android:id="@+id/tvContent"
16         android:layout_width="match_parent"
17         android:layout_height="wrap_content"
18         android:text="內容" />
19 </LinearLayout>

[2017-7-26]Android Learning Day4