[2017-7-26]Android Learning Day4
RecycleView
恩,学习Fragment的过程中的一个小实践居然用到了RecycleView!坑了我好久有木有!!好气哦,从昨晚到现在。(现在也还是一头雾水,不过照搬也会用了)
这是第一版的代码,都写在 MainActivity.java 里了。
public class MainActivity extends AppCompatActivity {
private RecyclerView rv;
private ArrayList<String> datas = new ArrayList<String>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
rv = new RecyclerView(this);
createData(datas);
setContentView(rv);
rv.setLayoutManager(new LinearLayoutManager(this));
rv.setAdapter(new RecyclerView.Adapter() {
//重写你想要的RecyclerView中的每一项所含有的内容
class myViewHolder extends RecyclerView.ViewHolder {
private TextView tv;
public myViewHolder(TextView itemView) {
super(itemView);
tv = itemView;
tv.setTextSize(28);
}
public TextView getTv() {
return tv;
}
}
//创建RecycleView中每一项的内容
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
return new myViewHolder(new TextView(parent.getContext()));
}
//创建的的每一项与布局绑定并设置数据
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
((myViewHolder)holder).getTv().setText(datas.get(position));
}
//获取RecycleView的长度
@Override
public int getItemCount() {
System.out.println("--------------------------------------->"+datas.size());
return datas.size();
}
});
}
public void createData(ArrayList<String> data) {
for(char i='A';i<='Z';i++)
{
data.add(String.valueOf(i));
}
}
}
接下里是升级后的,把Adapter单独提出来写,也是最重要的部分!MyAdapter.java
package com.liwenchi.learnrv; import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView; /**
* Created by VULCAN on 2017/7/26.
*/
class MyAdapter extends RecyclerView.Adapter { private CellData[] data = new CellData[]{new CellData("为什么Django框架仍然统治着Python开发世界","因为它真的很厉害"),new CellData("用Python分析购物篮","一种有用的技术成为关联分析...")}; //重写你想要的RecyclerView中的每一项所含有的内容
class myViewHolder extends RecyclerView.ViewHolder {
private View root;
private TextView tvTitle;
private TextView tvContent; public myViewHolder(View root) {
super(root); tvTitle = (TextView) root.findViewById(R.id.tvTitle);
tvContent = (TextView) root.findViewById(R.id.tvContent);
} public TextView getTvTitle() {
return tvTitle;
} public TextView getTvContent() {
return tvContent;
}
} //创建RecycleView中每一项的内容
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
//创建一个布局解释器
return new myViewHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.list_cell, null));
} //创建的的每一项与布局绑定并设置数据
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
((myViewHolder) holder).getTvTitle().setText(data[position].title);
((myViewHolder) holder).getTvContent().setText(data[position].content);
} //获取RecycleView的长度
@Override
public int getItemCount() {
return data.length;
}
}
MainActivity.java
package com.liwenchi.learnrv; import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView; import java.util.ArrayList;
public class MainActivity extends AppCompatActivity { private RecyclerView rv; private ArrayList<String> datas = new ArrayList<String>(); @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); rv = new RecyclerView(this); createData(datas); setContentView(rv); rv.setLayoutManager(new LinearLayoutManager(this)); rv.setAdapter(new MyAdapter());
} public void createData(ArrayList<String> data) { for(char i='A';i<='Z';i++)
{
data.add(String.valueOf(i));
}
}
}
CellData.java
public class CellData {
public CellData(String title, String content) {
this.title = title;
this.content = content;
}
String title = "title";
String content = "Content";
}
list_cell.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"> <TextView
android:id="@+id/tvTitle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearance"
android:text="标题" /> <TextView
android:id="@+id/tvContent"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="内容" />
</LinearLayout>
[2017-7-26]Android Learning Day4的更多相关文章
- 团队作业4——第一次项目冲刺(Alpha版本)2017.4.26
2017.04.26 天气热. 时间:上午 9:35 ---10:10分 地点:陆大304实验室 会议内容:今天将昨天的的一些问题进行了讨论,以及针对助教提出的问题进行了分析,是因为我们昨天经过讨论后 ...
- Loj #6069. 「2017 山东一轮集训 Day4」塔
Loj #6069. 「2017 山东一轮集训 Day4」塔 题目描述 现在有一条 $ [1, l] $ 的数轴,要在上面造 $ n $ 座塔,每座塔的坐标要两两不同,且为整点. 塔有编号,且每座塔都 ...
- Loj 6068. 「2017 山东一轮集训 Day4」棋盘
Loj 6068. 「2017 山东一轮集训 Day4」棋盘 题目描述 给定一个 $ n \times n $ 的棋盘,棋盘上每个位置要么为空要么为障碍.定义棋盘上两个位置 $ (x, y),(u, ...
- loj6068. 「2017 山东一轮集训 Day4」棋盘 二分图,网络流
loj6068. 「2017 山东一轮集训 Day4」棋盘 链接 https://loj.ac/problem/6068 思路 上来没头绪,后来套算法,套了个网络流 经典二分图 左边横,右边列 先重新 ...
- quick2.26 android下http崩溃
quick2.26 http android下崩溃解决方案 1.先去quick官网合并代码(QuickHTTPInterface.java,CCHTTPRequestAndroid.cpp) 2.屏蔽 ...
- [2017-8-02]Android Learning Day8
自定义动画效果 新建一个customAnim类 package com.liwenchi.myapplication; import android.view.animation.Animation; ...
- Android Learning:微信第三方登录
这两天,解决了微信第三方授权登录的问题,作为一个新手,想想也是一把辛酸泪.我想着,就把我的遇到的坑给大家分享一下,避免新手遇到我这样的问题能够顺利避开. 步骤一 微信开发者平台 我开始的解决思路是,去 ...
- Android Learning:多线程与异步消息处理机制
在最近学习Android项目源码的过程中,遇到了很多多线程以及异步消息处理的机制.由于之前对这块的知识只是浅尝辄止,并没有系统的理解.但是工程中反复出现让我意识到这个知识的重要性.所以我整理出这篇博客 ...
- Android Learning:数据存储方案归纳与总结
前言 最近在学习<第一行android代码>和<疯狂android讲义>,我的感触是Android应用的本质其实就是数据的处理,包括数据的接收,存储,处理以及显示,我想针对这几 ...
随机推荐
- Golang开发工具LiteIDE使用方法整理
安装 参考github的说明 添加GOPATH 创建workspace 创建新文件 运行程序 Liteide中运行程序有两种方式: FR(FileRun)是编译并运行单个文件,可以使用Shift + ...
- Eclipse支持文件UTF-8编码
Eclipse修改编码格式_百度经验https://jingyan.baidu.com/article/2009576193ee38cb0721b416.html 这篇最棒 如何为eclipse中的文 ...
- 三、如何设置npm镜像
一.临时使用 npm --registry https://registry.npm.taobao.org install express 二.永久使用 npm config set registry ...
- 六、es6 map
一.map的特点 JavaScript 的对象(Object),本质上是键值对的集合(Hash 结构),但是传统上只能用字符串当作键.这给它的使用带来了很大的限制. 为了解决这个问题,ES6 提供了 ...
- iphone 分辨率相关
iPhone 1G 320x480 iPhone 3G 320x480 iPhone 3GS 320x480 iPhone 4 640x960 iPhone 4S 640x960 iPhone 5 6 ...
- webservice服务的提供及调用完整代码示例
服务提供方: applicationContext.xml applicationContext-webService.xml 服务调用方:
- hive权限配置
基于CDH5.x的Hive权限配置 1.打开权限控制,默认是没有限制的 set hive.security.authorization.enabled=true; 2.配置默认权限 hive.secu ...
- druid 连接Oracle时出现的错误
转博主https://blog.csdn.net/jiangyu1013/article/details/70237550#commentsedit mysql 更新 SQL 语句 无错误 批量 报错 ...
- spring程序打包war,直接通过-jar启动,并指定spring.profiles.active参数控制多环境配置
备注:spring boot有内嵌tomcat,jar项目可以用java -jar命令启动,war包也可以,且可以直接指定spring.profiles.active参数控制多环境配置 直接指定传参, ...
- Java集合和数组的区别
参考:Java集合和数组的区别 集合和容器都是Java中的容器. 区别 数组特点:大小固定,只能存储相同数据类型的数据 集合特点:大小可动态扩展,可以存储各种类型的数据 转换 数组转换为集合: A ...