<build.gradle导包>
apply plugin: 'com.android.application'
android {
compileSdkVersion 25
buildToolsVersion "26.0.1"
defaultConfig {
applicationId "com.example.adminjs.jiao1108"
minSdkVersion 15
targetSdkVersion 25
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:25.+'
compile 'com.github.liuguangqiang.SuperRecyclerView:super-recyclerview:0.1.2'
compile 'com.jakewharton:butterknife:8.8.1'
compile 'com.jakewharton:butterknife-compiler:8.8.1'
compile 'com.nostra13.universalimageloader:universal-image-loader:1.9.5'
compile 'com.liaoinstan.springview:library:1.3.0'
compile 'com.github.bumptech.glide:glide:3.7.0'
}
<清单列表请求网络>
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.adminjs.jiao1108">
<uses-permission android:name="android.permission.INTERNET"/>
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
<activity_main.xml布局>
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.liaoinstan.springview.widget.SpringView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/springview">
<android.support.v7.widget.RecyclerView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/recyclerview">
</android.support.v7.widget.RecyclerView>
</com.liaoinstan.springview.widget.SpringView>
</RelativeLayout>
<layout_fitem.xml>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="vertical">
<ImageView
android:src="@mipmap/ic_launcher"
android:id="@+id/item_simageview"
android:layout_width="match_parent"
android:layout_height="100dp" />
<TextView
android:background="@color/colorPrimary"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/item_stextview"/>
</LinearLayout>
<layout_item布局>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<ImageView
android:src="@mipmap/ic_launcher"
android:scaleType="centerCrop"
android:id="@+id/item_imageview"
android:layout_width="match_parent"
android:layout_height="100dp" />
<TextView
android:background="@color/colorPrimary"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/item_textview"/>
</LinearLayout>
《layout_sitem》
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="vertical">
<ImageView
android:src="@mipmap/ic_launcher"
android:scaleType="centerCrop"
android:id="@+id/item_simageview"
android:layout_width="match_parent"
android:layout_height="100dp" />
</LinearLayout>
<MainActivity主页面>
package muhanxi.recycleview;
import android.app.Activity;
import android.graphics.Color;
import android.os.Build;
import android.os.Bundle;
import android.support.annotation.RequiresApi;
import android.support.v7.widget.GridLayoutManager;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.StaggeredGridLayoutManager;
import android.view.View;
import android.widget.LinearLayout;
import android.widget.Toast;
import com.liaoinstan.springview.container.DefaultFooter;
import com.liaoinstan.springview.container.DefaultHeader;
import com.liaoinstan.springview.widget.SpringView;
import com.yqritc.recyclerviewflexibledivider.HorizontalDividerItemDecoration;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends Activity {
private RecyclerView recyclerView;
private List<String> list = new ArrayList<>();
private SpringView springView;
private LinearLayoutManager linearLayoutManager;
@RequiresApi(api = Build.VERSION_CODES.GINGERBREAD)
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
recyclerView = (RecyclerView) findViewById(R.id.recyclerview);
list.add("http://f10.baidu.com/it/u=2881303562,336932824&fm=72");
list.add("http://f11.baidu.com/it/u=681755471,2018070071&fm=72");
list.add("http://f10.baidu.com/it/u=960650584,863938083&fm=72");
list.add("http://img0.imgtn.bdimg.com/it/u=783060973,4278100629&fm=27&gp=0.jpg");
list.add("http://img1.imgtn.bdimg.com/it/u=3743124979,3234956668&fm=27&gp=0.jpg");
list.add("http://img4.imgtn.bdimg.com/it/u=3468613159,957707785&fm=27&gp=0.jpg");
list.add("http://img3.imgtn.bdimg.com/it/u=2971205354,485034289&fm=27&gp=0.jpg");
list.add("http://f10.baidu.com/it/u=2881303562,336932824&fm=72");
list.add("http://f11.baidu.com/it/u=681755471,2018070071&fm=72");
list.add("http://f10.baidu.com/it/u=960650584,863938083&fm=72");
list.add("http://img0.imgtn.bdimg.com/it/u=783060973,4278100629&fm=27&gp=0.jpg");
list.add("http://img1.imgtn.bdimg.com/it/u=3743124979,3234956668&fm=27&gp=0.jpg");
list.add("http://img4.imgtn.bdimg.com/it/u=3468613159,957707785&fm=27&gp=0.jpg");
list.add("http://img3.imgtn.bdimg.com/it/u=2971205354,485034289&fm=27&gp=0.jpg");
// 设置布局管理器
// new GridLayoutManager() 九宫格布局管理器
// new LinearLayoutManager() listview 布局管理器
//
// new StaggeredGridLayoutManager() 瀑布流 布局管理器
// recyclerView.setLayoutManager(new GridLayoutManager(this,5));
// recyclerView.setLayoutManager(new StaggeredGridLayoutManager(3, LinearLayout.VERTICAL));
// RecyclerViewAdapter adapter = new RecyclerViewAdapter(this,list) ;
MultiAdapter adapter = new MultiAdapter(this,list) ;
linearLayoutManager = new LinearLayoutManager(this,LinearLayoutManager.VERTICAL,false);
recyclerView.setLayoutManager(linearLayoutManager);
recyclerView.setAdapter(adapter);
//
// adapter.setIListener(new RecyclerViewAdapter.Listener() {
// @Override
// public void onClick(View view, int position) {
// Toast.makeText(MainActivity.this, ""+position, Toast.LENGTH_SHORT).show();
// }
//
// @Override
// public void longClick(View view, int position) {
//
// }
// });
recyclerView.setOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
super.onScrollStateChanged(recyclerView, newState);
// linearLayoutManager.findFirstVisibleItemPosition()
}
@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
super.onScrolled(recyclerView, dx, dy);
}
});
// recyclerView.setOnI
// recyclerView.addItemDecoration(new HorizontalDividerItemDecoration.Builder(this)
// .color(Color.RED).build());
springView = (SpringView) findViewById(R.id.springview);
springView.setHeader(new DefaultHeader(this));
springView.setFooter(new DefaultFooter(this));
springView.setListener(new SpringView.OnFreshListener() {
@Override
public void onRefresh() {
//下啦
springView.onFinishFreshAndLoad();
}
@Override
public void onLoadmore() {
// 上啦
springView.onFinishFreshAndLoad();
}
});
// adapter.notifyDataSetChanged();
}
}
《IApplication页面》
package com.example.adminjs.jiao1108;
import android.app.Application;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;
/**
* Created by muhanxi on 17/11/8.
*/
public class IApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
ImageLoaderConfiguration configuration =
new ImageLoaderConfiguration.Builder(this).build();
ImageLoader.getInstance().init(configuration );
}
}
<MultiAdapter适配器>
package com.example.adminjs.jiao1108;
import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import com.bumptech.glide.Glide;
import java.util.List;
import butterknife.BindView;
import butterknife.ButterKnife;
/**
* Created by CZ on 2017/11/8.
*/
public class MultiAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
private Context context;
private List<String> list;
public MultiAdapter(Context context, List<String> list) {
this.context = context;
this.list = list;
}
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
if (viewType == 0) {
View view = LayoutInflater.from(context).inflate(R.layout.layout_fitem,parent, false);
return new FViewHolder(view);
} else {
View view = LayoutInflater.from(context).inflate(R.layout.layout_sitem, parent, false);
return new SViewHolder(view);
}
}
@Override
public int getItemViewType(int position) {
return position % 2 ;
}
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
if(holder instanceof FViewHolder){
FViewHolder fViewHolder = (FViewHolder)holder ;
fViewHolder.itemStextview.setText(position+"");
Glide.with(context).load(list.get(position)).into(fViewHolder.itemSimageview);
// ImageLoader.getInstance().displayImage(list.get(position),fViewHolder.itemSimageview);
} else {
SViewHolder sViewHolder = (SViewHolder)holder ;
Glide.with(context).load(list.get(position)).into(sViewHolder.itemSimageview);
// ImageLoader.getInstance().displayImage(list.get(position),sViewHolder.itemSimageview);
}
}
@Override
public int getItemCount() {
return list.size();
}
static class FViewHolder extends RecyclerView.ViewHolder{
@BindView(R.id.item_simageview)
ImageView itemSimageview;
@BindView(R.id.item_stextview)
TextView itemStextview;
FViewHolder(View view) {
super(view);
ButterKnife.bind(this, view);
}
}
class SViewHolder extends RecyclerView.ViewHolder{
@BindView(R.id.item_simageview)
ImageView itemSimageview;
SViewHolder(View view) {
super(view);
ButterKnife.bind(this, view);
}
}
}
《RecyclerViewAdapter适配器》
package com.example.adminjs.jiao1108;
import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.WindowManager;
import android.widget.ImageView;
import android.widget.TextView;
import com.bumptech.glide.Glide;
import java.util.List;
import java.util.Random;
import butterknife.BindView;
import butterknife.ButterKnife;
/**
* Created by muhanxi on 17/11/8.
*/
public class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerViewAdapter.ImageViewHolder> {
private Context context;
private List<String> list;
private int itemWidth ;
public RecyclerViewAdapter(Context context, List<String> list) {
this.context = context;
this.list = list;
WindowManager wm = (WindowManager) context
.getSystemService(Context.WINDOW_SERVICE);
int width = wm.getDefaultDisplay().getWidth();
itemWidth = width / 3 ;
}
//创建ViewHolder
@Override
public ImageViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
// 创建一个View
View view = LayoutInflater.from(context).inflate(R.layout.layout_item, parent,false);
return new ImageViewHolder(view);
}
// 绑定view 显示数据
@Override
public void onBindViewHolder(ImageViewHolder holder, final int position) {
// 显示图片
// Glide.with(context).load("https://car3.autoimg.cn/cardfs/product/g18/M12/51/43/1024x0_1_q87_autohomecar__wKgH2VjnqU-AHth4AAiGLIUNYJk190.jpg").into(holder.itemImageview);
ViewGroup.LayoutParams params = holder.itemImageview.getLayoutParams() ;
int itemHeight = 300 ;
itemHeight = new Random().nextInt(500);
if(itemHeight < 300){
itemHeight = 300 ;
}
params.width = itemWidth ;
params.height = itemHeight ;
holder.itemImageview.setLayoutParams(params);
// holder.itemImageview.setImageResource(R.mipmap.ic_launcher);
// ImageLoader.getInstance().displayImage(list.get(position),holder.itemImageview);
Glide.with(context).load(list.get(position)).into(holder.itemImageview);
holder.textView.setText(position+"");
holder.itemImageview.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if(listener != null){
listener.onClick(view,position);
}
}
});
holder.itemImageview.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View view) {
listener.longClick(view,position);
return false;
}
});
}
// 获取条目的个数
@Override
public int getItemCount() {
return list.size();
}
static class ImageViewHolder extends RecyclerView.ViewHolder {
@BindView(R.id.item_imageview)
ImageView itemImageview;
@BindView(R.id.item_textview)
TextView textView;
public ImageViewHolder(View itemView) {
super(itemView);
ButterKnife.bind(this, itemView);
// itemImageview = itemView.findViewById(R.id.item_imageview);
}
}
private Listener listener ;
public void setIListener(Listener listener){
this.listener = listener;
}
public interface Listener {
public void onClick(View view, int position);
public void longClick(View view, int position);
}
}
<TestAdapter适配器>
package com.example.adminjs.jiao1108;
import android.support.v7.widget.RecyclerView;
import android.view.ViewGroup;
/**
* Created by muhanxi on 17/11/8.
*/
public class TestAdapter extends RecyclerView.Adapter {
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
return null;
}
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
}
@Override
public int getItemCount() {
return 0;
}
}
RecyclerView布局+瀑布流
最新推荐文章于 2025-05-09 12:43:29 发布