RecyclerView实现多种布局与OkHttp结合获取数据
来源:互联网 发布:极点五笔 mac 编辑:程序博客网 时间:2024/06/05 22:39
RecyclerView布局是一个高解耦的控件,看起来非常麻烦其实可以通过它实现很多的效果包括我们之前钟爱的listview girdview,还能够实现瀑布流的效果
配置我们的包
app的build中依赖(有26+的需要删除)
compile 'com.android.support:mediarouter-v7:25.0.0'
compile 'com.android.support:appcompat-v7:25.0.0'
compile 'com.android.support:recyclerview-v7:25.0.0'
如果出现版本号错误 粘贴此代码 在app build 中 android 和 dependencies中间
configurations.all {
resolutionStrategy.eachDependency { DependencyResolveDetails details ->
def requested = details.requested
if (requested.group == 'com.android.support') {
if (!
requested.name
.startsWith("multidex")) {
details.useVersion '24.1.0'
}
}
}
}
配置好之后就可以进行我们的代码了
import java.util.ArrayList;
import java.util.List;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.RecyclerView.ViewHolder;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
public classHomeActivity extendsActionBarActivity{
private RecyclerView mRecyclerView;
private List<String> mDatas;
private HomeAdapter mAdapter;
@Override
protected voidonCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_single_recyclerview);
initData();
mRecyclerView = (RecyclerView) findViewById(R.id.id_recyclerview);
mRecyclerView.setLayoutManager(new LinearLayoutManager(this));
mRecyclerView.setAdapter(mAdapter = new HomeAdapter());
}
protected voidinitData()
{
mDatas = new ArrayList<String>();
for (int i ='A'; i < 'z'; i++)
{
mDatas.add("" + (char) i);
}
}
class HomeAdapter extends RecyclerView.Adapter<HomeAdapter.MyViewHolder>
{
@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType)
{
MyViewHolder holder = new MyViewHolder(LayoutInflater.from(
HomeActivity.this).inflate(R.layout.item_home, parent,
false));
return holder;
}
@Override
public voidonBindViewHolder(MyViewHolder holder, int position)
{
holder.tv.setText(mDatas.get(position));
}
@Override
public intgetItemCount()
{
return mDatas.size();
}
class MyViewHolder extends ViewHolder
{
TextView tv;
public MyViewHolder(View view)
{
super(view);
tv = (TextView) view.findViewById(R.id.id_num);
}
}
}
}
import java.util.List;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.RecyclerView.ViewHolder;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
public classHomeActivity extendsActionBarActivity{
private RecyclerView mRecyclerView;
private List<String> mDatas;
private HomeAdapter mAdapter;
@Override
protected voidonCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_single_recyclerview);
initData();
mRecyclerView = (RecyclerView) findViewById(R.id.id_recyclerview);
mRecyclerView.setLayoutManager(new LinearLayoutManager(this));
mRecyclerView.setAdapter(mAdapter = new HomeAdapter());
}
protected voidinitData()
{
mDatas = new ArrayList<String>();
for (int i ='A'; i < 'z'; i++)
{
mDatas.add("" + (char) i);
}
}
class HomeAdapter extends RecyclerView.Adapter<HomeAdapter.MyViewHolder>
{
@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType)
{
MyViewHolder holder = new MyViewHolder(LayoutInflater.from(
HomeActivity.this).inflate(R.layout.item_home, parent,
false));
return holder;
}
@Override
public voidonBindViewHolder(MyViewHolder holder, int position)
{
holder.tv.setText(mDatas.get(position));
}
@Override
public intgetItemCount()
{
return mDatas.size();
}
class MyViewHolder extends ViewHolder
{
TextView tv;
public MyViewHolder(View view)
{
super(view);
tv = (TextView) view.findViewById(R.id.id_num);
}
}
}
}
这样基本的listview就实现了
想要改变布局其实非常简单 一行代码就可以改变为gridview形式
mRecyclerView.setLayoutManager(new GridLayoutManager(this,4));
瀑布流同样如此
mRecyclerView.setLayoutManager(new StaggeredGridLayoutManager(4,StaggeredGridLayoutManager.VERTICAL));
配合之前我们的OkHttp使用就可以获取我们的网络数据了,
改变我们的布局 添加配置 达到我们想要出现的效果
Acitivity布局
<android.support.v7.widget.RecyclerView android:layout_below="@+id/goods_searchLine" android:id="@+id/id_recyclerview" android:divider="#ffff0000" android:dividerHeight="10dp" android:layout_width="match_parent" android:layout_height="match_parent" />
布局
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:background="#44ff0000" android:layout_height="wrap_content" android:layout_marginBottom="5dp" ><LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" > <ImageView android:id="@+id/id_img" android:layout_width="80dp" android:layout_height="wrap_content" android:src="@mipmap/ic_launcher" /> <TextView android:id="@+id/id_num" android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center" android:text="1" /></LinearLayout></FrameLayout>
这里我实现的是一个图片一个标题的效果 frameLayout不能使用 below 或者 orientation 所以可以自己嵌套一个线性布局或者相对布局
实现图片就可以使用我们的imageLoader
阅读全文
0 0
- RecyclerView实现多种布局与OkHttp结合获取数据
- RecyclerView和okhttp结合 实现一个网络请求数据
- RecyclerView+OKhttp三大布局与网络请求数据
- RecyclerView实现多种item布局
- 优雅实现RecyclerView多种布局
- RecyclerView实现多种布局样式
- Okhttp结合RecyclerView使用
- RecyclerView(四)——用RecyclerView实现多种布局
- RecyclerView添加多种布局
- RecyclerView中的多种布局
- RecyclerView中的多种布局
- RecyclerView中的多种布局
- RecyclerView展示多种布局
- RecyclerView多种item布局
- Kotlin实战(二): 实现RecyclerView多种Item布局
- RecyclerView显示多种Item布局
- RecyclerView的多种布局MultiItemTypeAdapter
- RecyclerView-点击切换多种布局
- 网页设计和程序设计
- hdu 1068 Girls and Boys(二分匹配)
- 台湾大学机器学习基石Lecture6
- 欢迎使用CSDN-markdown编辑器
- SQL学习笔记
- RecyclerView实现多种布局与OkHttp结合获取数据
- Linux Centos 6.5网络启动不起来Bringing up interface eth0: Error
- Leetcode4. Median of Two Sorted Arrays
- Linux进程调度学习1
- pycharm忽略文件夹方法
- minimum-depth-of-binary-tree java code
- 正确理解使用Vue里的nextTick方法
- Ubuntu系统升级系统Unable to find expected entry 'main/binary-i386sudo/Packages'in...
- 高精度练习之减法