[2017-7-26]Android Learning Day4

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>
时间: 2024-08-05 01:14:11

[2017-7-26]Android Learning Day4的相关文章

团队作业4——第一次项目冲刺(Alpha版本)2017.4.26

2017.04.26 天气热. 时间:上午 9:35 ---10:10分 地点:陆大304实验室 会议内容:今天将昨天的的一些问题进行了讨论,以及针对助教提出的问题进行了分析,是因为我们昨天经过讨论后在任务中又加上了一些细节,导致了任务又多了一点点.随着时间的临近,项目Alpha版本即将截止,今天小组成员对任务有又进行了确认,齐心协力完成我们的任务. 1:每日讨论图片(拍摄者小组成员 黄睿) 2.任务分解图: 3.任务分配: 今天的整体分工如下: 武健男:负责今天的博客编写: 林俊鹏:询问实验室

[2017-8-2]Android Learning Day8

自定义动画效果 新建一个customAnim类 1 package com.liwenchi.myapplication; 2 3 import android.view.animation.Animation; 4 import android.view.animation.Transformation; 5 6 import static java.lang.Math.*; 7 8 /** 9 * Created by VULCAN on 2017/8/2. 10 */ 11 12 publ

2017.11.26【清华集训2017】模拟

T1 5483. [清华集训2017模拟11.26]简单路径T2 5484. [清华集训2017模拟11.26]快乐树T3 5485. [清华集训2017模拟11.26]字符串 T1 结论题,结论很显然任意两条路径权异或后,会将两条路径的交的贡献删去.然后用个桶存一下出现过的异或和,暴力判一下就可以了 code 1 #include<cstdio> 2 #include<cmath> 3 #include<cstring> 4 #include<algorithm

Android Learning:多线程与异步消息处理机制

在最近学习Android项目源码的过程中,遇到了很多多线程以及异步消息处理的机制.由于之前对这块的知识只是浅尝辄止,并没有系统的理解.但是工程中反复出现让我意识到这个知识的重要性.所以我整理出这篇博客,主要介绍了线程和异步处理机制的意义和用法,目的在于帮助初学者能够加深对异步消息处理机制的理解,在实际Android工程中能够更多地使用AsyncTask工具类在子线程中进行UI更新. 一.Android当中的多线程[1] 在Android当中,当一个应用程序的组件启动的时候,并且没有其他的应用程序

#android learning day 2 #Android Studio项目的目录结构

新建一个空白的工程MyApplication,工程目录如下: 1).idea .idea是一些xml配置文件,包括版权.这个版块知识有限,后续理解后将补充上. 2)  app app之于MyApplication相当于project之于eclipse的workspace,在android studio中属于module.其中src目录下有两个文件夹:androidTest 和main. androidTest用于测试. main文件夹包含了java文件和资源文件. 其中res文件夹下面的: la

#android learning day 1 #Android Studio功能

Android Studio提供了Windows.Mac OS X.Linux版本,用户根据自己的系统选择下载. 下载和安装安装请参考: http://developer.android.com/sdk/installing/studio.html#Installing Android Studio 的界面: 关于android studio: 1.从版本库Check项目,这个功能很强大.可以直接从SVN,GIT库中直接得到代码创建工程. 2.Android Studio 和Eclipse+AD

Android Learning:微信第三方登录

这两天,解决了微信第三方授权登录的问题,作为一个新手,想想也是一把辛酸泪.我想着,就把我的遇到的坑给大家分享一下,避免新手遇到我这样的问题能够顺利避开. 步骤一 微信开发者平台 我开始的解决思路是,去微信开发者平台看API文档. 这个API文档的主要意思呢,有三点: 1.你得下载这几样东西(下载链接),一个是他的范例代码,一个是他的签名生成工具. 2.如果你自己的APP想要微信第三方授权,你得去申请一个APPID,这个APPID呢,就是微信给咱们APP分配的一个代号.当然微信不是免费给你服务,为

Android Learning:数据存储方案归纳与总结

前言 最近在学习<第一行android代码>和<疯狂android讲义>,我的感触是Android应用的本质其实就是数据的处理,包括数据的接收,存储,处理以及显示,我想针对这几环分别写一篇博客,记得我的学习心得,也希望跟各位新手同学相互努力促进.今天这篇博客,我想介绍一下数据的存储,因为数据的接收,存储,处理以及显示这几环环环相扣,而数据的存储直接关系到数据的处理和显示,所以显得尤为重要. 所以本文针对数据存储的常见方案和其使用进行了归纳.分为程序内存储和程序间数据访问,程序内存储

Android备注26.Android异步任务(AsyncTask)

转载请表明出处:http://blog.csdn.net/u012637501(嵌入式_小J的天空) 一.引言 我们知道Android的UI线程主要负责处理用户的按键事件.用户触屏事件及屏幕画图事件等,对于其它的操作尽量不要在UI线程中实现,由于这些操作非常有可能会堵塞UI线程,比方一些耗时操作,会导致UI界面停止响应,从而减少了用户的体验.所以,为了避免UI线程失去响应的问题,Android建议将耗时操作放在新线程中完毕.但新线程也可能须要动态更新UI组件:比方须要从网上获取一个网页,然后在T