您的位置:首页 > 移动开发 > Android开发

RecyclerView+CardView

2016-05-27 10:36 405 查看

RecyclerView+CardView

简单效果图



build.gradle

apply plugin: 'com.android.application'

android {
compileSdkVersion 22
buildToolsVersion "23.0.2"

defaultConfig {
applicationId "com.example.demo.recyclerviewtest"
minSdkVersion 21
targetSdkVersion 22
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:22.2.1'
compile 'com.android.support:recyclerview-v7:22.2.1'
compile 'com.android.support:cardview-v7:22.2.1'
}


布局

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"
android:paddingLeft="10dp"
android:paddingRight="10dp"
android:paddingTop="10dp"
android:paddingBottom="10dp" tools:context=".MainActivity">

<android.support.v7.widget.RecyclerView
android:id="@+id/recycler_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scrollbars="vertical"
>

</android.support.v7.widget.RecyclerView>

</RelativeLayout>


item_content.xml

<?xml version="1.0" encoding="utf-8"?>

<android.support.v7.widget.CardView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:card_view="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/card_view"
card_view:cardCornerRadius="15dp"
android:layout_margin="5dp">

<TextView
android:id="@+id/text_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:textSize="60sp"
android:textStyle="bold"/>

</android.support.v7.widget.CardView>


自定义RecyclerView适配器

package com.example.demo.recyclerviewtest;

import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;

import java.util.ArrayList;

public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder>{

private ArrayList<String> contentList;

public MyAdapter(ArrayList<String> contentList){
this.contentList = contentList;
}

@Override
public MyAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
ViewHolder viewHolder = new ViewHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.item_content,parent,false));
return  viewHolder;
}

@Override
public void onBindViewHolder(MyAdapter.ViewHolder holder, int position) {
holder.textView.setText(contentList.get(position));
}

@Override
public int getItemCount() {
return contentList.size();
}

public class ViewHolder extends RecyclerView.ViewHolder {

private TextView textView;

public ViewHolder(View view) {
super(view);

textView = (TextView)
view.findViewById(R.id.text_view);
}
}

}


Activity

package com.example.demo.recyclerviewtest;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.GestureDetector;
import android.view.MotionEvent;
import android.view.View;
import android.widget.Toast;

import java.util.ArrayList;

public class MainActivity extends AppCompatActivity {

private RecyclerView recyclerView;
private MyAdapter adapter;
private ArrayList<String> contentList;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

recyclerView = (RecyclerView) findViewById(R.id.recycler_view);
recyclerView.setHasFixedSize(true);
RecyclerView.LayoutManager layoutManager= new LinearLayoutManager(getApplicationContext());
recyclerView.setLayoutManager(layoutManager);

contentList = new ArrayList<>();
contentList.add("China");
contentList.add("USA");
contentList.add("Canada");
contentList.add("England");
contentList.add("Japan");
adapter = new MyAdapter(contentList);
recyclerView.setAdapter(adapter);

recyclerView.addOnItemTouchListener(new RecyclerView.OnItemTouchListener() {

GestureDetector gestureDetector = new GestureDetector(getApplicationContext(),new GestureDetector.SimpleOnGestureListener(){
@Override
public boolean onSingleTapUp(MotionEvent e) {
return true;
}
});

@Override
public boolean onInterceptTouchEvent(RecyclerView rv, MotionEvent e) {

View childView = rv.findChildViewUnder(e.getX(),e.getY());
if(childView != null && gestureDetector.onTouchEvent(e)){
int position = rv.getChildAdapterPosition(childView);
Toast.makeText(MainActivity.this,contentList.get(position),Toast.LENGTH_SHORT).show();
}

return false;
}

@Override
public void onTouchEvent(RecyclerView rv, MotionEvent e) {

}

@Override
public void onRequestDisallowInterceptTouchEvent(boolean disallowIntercept) {

}
});
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android