[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应用的本质其实就是数据的处理,包括数据的接收,存储,处理以及显示,我想针对这几 ...
随机推荐
- Linux之查看系统配置命令
1.查看CPU个数: [root@ifusion ~]# lscpu 2.查看CPU进程数.核数: [root@ifusion ~]# cat /proc/cpuinfo 3.查看内存总量: [roo ...
- 【学习总结】vi/vim命令是使用
每次要么想不起来用,要么进去了出不来,真是醉了.痛定思痛此处填坑. 参考教程:菜鸟教程vi/vim 实验环境:借Git-bash宝地一用 注意:记住关键的步骤! 按i a o进入输入模式(即使有时按v ...
- PHP导出CSV文件出现乱码的解决方法
在做项目时碰到使用外语的情况下,我们就会使用UTF-8编码.但是,在用PHP导出CSV文件时,如果写入的数据是使用UTF-8编码的日语.韩语之类的外文,就会出现乱码. 要解决PHP生成CSV文件的乱码 ...
- MySQL 性能调优之索引
原文:http://bbs.landingbj.com/t-0-245452-1.html 对于索引的优化,我们第一需要找到合适的字段,第二创建索引找到合适的顺序,第三要找到合适的比例,第四是要做合适 ...
- hangfire使用笔记
1.导入nuget包 2.配置 简单配置后就可以写自己的Job了 注意:Hangfire.RecurringJobExtensions这个扩展支持两种job添加方法:json配置文件和特性.但由于时区 ...
- laravel打印sql
DB::connection()->enableQueryLog(); print_r(DB::getQueryLog());
- laravel中如何在模型中自关联?
https://segmentfault.com/q/1010000007926567 在模型中声明一对多的关系,关联表本身.parent_id对应父记录的id.我在sof中查阅到很多这样的写法: p ...
- 在layui中使用ajax不起作用
又是一个坑,坑了我一个下午.在layui插件中使用jquery的ajax请求,一点反应都没有,不管是改成get还是post请求,后台毫无反应,前端谷歌调试也没有报半点错. js代码如下: layui. ...
- python设计模式第八天【装饰器模式】
1.定义 使用包装的释放扩展类的功能,但是不使用继承 2.使用场景 3.代码实现 #!/usr/bin/env python #! _*_ coding:UTF-8 _*_ def MyDecorat ...
- Python memecache
memcached Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载,故常用来做数据库缓存.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态 ...