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的更多相关文章

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

    2017.04.26 天气热. 时间:上午 9:35 ---10:10分 地点:陆大304实验室 会议内容:今天将昨天的的一些问题进行了讨论,以及针对助教提出的问题进行了分析,是因为我们昨天经过讨论后 ...

  2. Loj #6069. 「2017 山东一轮集训 Day4」塔

    Loj #6069. 「2017 山东一轮集训 Day4」塔 题目描述 现在有一条 $ [1, l] $ 的数轴,要在上面造 $ n $ 座塔,每座塔的坐标要两两不同,且为整点. 塔有编号,且每座塔都 ...

  3. Loj 6068. 「2017 山东一轮集训 Day4」棋盘

    Loj 6068. 「2017 山东一轮集训 Day4」棋盘 题目描述 给定一个 $ n \times n $ 的棋盘,棋盘上每个位置要么为空要么为障碍.定义棋盘上两个位置 $ (x, y),(u, ...

  4. loj6068. 「2017 山东一轮集训 Day4」棋盘 二分图,网络流

    loj6068. 「2017 山东一轮集训 Day4」棋盘 链接 https://loj.ac/problem/6068 思路 上来没头绪,后来套算法,套了个网络流 经典二分图 左边横,右边列 先重新 ...

  5. quick2.26 android下http崩溃

    quick2.26 http android下崩溃解决方案 1.先去quick官网合并代码(QuickHTTPInterface.java,CCHTTPRequestAndroid.cpp) 2.屏蔽 ...

  6. [2017-8-02]Android Learning Day8

    自定义动画效果 新建一个customAnim类 package com.liwenchi.myapplication; import android.view.animation.Animation; ...

  7. Android Learning:微信第三方登录

    这两天,解决了微信第三方授权登录的问题,作为一个新手,想想也是一把辛酸泪.我想着,就把我的遇到的坑给大家分享一下,避免新手遇到我这样的问题能够顺利避开. 步骤一 微信开发者平台 我开始的解决思路是,去 ...

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

    在最近学习Android项目源码的过程中,遇到了很多多线程以及异步消息处理的机制.由于之前对这块的知识只是浅尝辄止,并没有系统的理解.但是工程中反复出现让我意识到这个知识的重要性.所以我整理出这篇博客 ...

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

    前言 最近在学习<第一行android代码>和<疯狂android讲义>,我的感触是Android应用的本质其实就是数据的处理,包括数据的接收,存储,处理以及显示,我想针对这几 ...

随机推荐

  1. java总结:字符串切割

    java中String.split()用法 在java.lang包中有String.split()方法,返回是一个数组.1.“.”和“|”都是转义字符,必须得加"\\"; 所以如果 ...

  2. scp Permission denied

    https://blog.csdn.net/xlgen157387/article/details/49818259

  3. python3 selenium webdriver 元素定位xpath定位骚操作

    源文http://www.cnblogs.com/qingchunjun/p/4208159.html By.xpath() 这个方法是非常强大的元素查找方式,使用这种方法几乎可以定位到页面上的任意元 ...

  4. [转帖]Docker的数据管理(volume/bind mount/tmpfs)

    Docker(十五)-Docker的数据管理(volume/bind mount/tmpfs) https://www.cnblogs.com/zhuochong/p/10069719.html do ...

  5. [转帖] BMC安全隐患

    BMC再现漏洞,裸金属云服务器岌岌可危 https://zhuanlan.kanxue.com/article-8006.htm 之前有vt-x 可能有隐患 现在看起来BMC 也就是IPMI 也有隐患 ...

  6. javax.validation.ValidationException: Unable to create a Configuration, because no Bean Validation provider could be found. Add a provider like Hibernate Validator (RI) to your classpath.

    项目依赖 <dependency> <groupId>javax</groupId> <artifactId>javaee-api</artifa ...

  7. 解决方法:CentOS7用yum安装软件显示错误:cannot find a valid baseurl for repo: base/7/x86_64

    在Linux学习中,发现使用yum安装软件出现以下的错误: 百度了各种方法,很多人也发现光是修改REBOOT=yes也没用,多次进行挂载.修改网卡配置文件.重置IP地址.重启网络.创建又删除配置文件的 ...

  8. 老男孩 python学习自修第二十二天【文件上传与下载】

    1.使用socket实现文件上传 server.py #!/usr/bin/env python # _*_ coding:UTF-8 _*_ import os import SocketServe ...

  9. Laravel从入门到精通

    1. Laravel框架的下载安装 例如: 在D:\test\laravel目录下新建一个目录为test_laravel 第一步,下载laravel框架 在D:\test\laravel\test_l ...

  10. vue表單

    使用v-model進行表單雙向數據綁定. 可以根據控件決定數據的類型,可以綁定input.單選.複選.下拉框等 可以使用number和trim等修飾符.