最近在研究listview的横向展示数据。竖向展示数据,这个不用说估计大家都懂。那么首先展示一下我的演示界面。
在这里,我使用的是RecyclerView+CardView这两者结合。展示出卡片式风格的界面。那么接下来就是RecyclerView的简单使用步骤。
添加RecyclerView和CardView的关联库
compile ‘com.android.support:recyclerview-v7:24.0.0’
compile ‘com.android.support:cardview-v7:24.0.0’
- 在xml布局里面进行引用
在主布局里面的xml,引用RecyclerView。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
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:orientation="vertical"
tools:context="com.example.administrator.listviewdemo1.MainActivity">
<android.support.v7.widget.RecyclerView
android:id="@+id/lv"
android:layout_width="match_parent"
android:layout_height="match_parent"
/>
</LinearLayout>
在RecyclerVew.Adapter的xml里面引用
<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/title"
android:layout_width="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_height="wrap_content"
android:layout_margin="10dp"
/>
<ImageView
android:id="@+id/img"
android:layout_width="200dp"
android:layout_height="200dp"
android:scaleType="fitXY"
android:layout_marginLeft="10dp"/>
</LinearLayout>
</android.support.v7.widget.CardView>
- mainactivity的主要代码
package com.example.administrator.listviewdemo1;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import com.example.administrator.listviewdemo1.adapter.ListViewAdapter;
import java.util.ArrayList;
import butterknife.ButterKnife;
import butterknife.InjectView;
public class MainActivity extends AppCompatActivity {
@InjectView(R.id.lv)
RecyclerView lv;
private ArrayList<String> titles = new ArrayList<String>();
private int[] imgs = {R.drawable.list_one,R.drawable.list_two,R.drawable.list_three,R.drawable.list_four,
R.drawable.list_five,R.drawable.list_six,R.drawable.list_seven,R.drawable.list_eight,
R.drawable.list_nine,R.drawable.list_ten};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ButterKnife.inject(this);
initView();
}
private void initView() {
for (int i = 0;i<10;i++){
titles.add("第"+i+"张图片");
}
// 不改变的recyclerview布局尺寸
lv.setHasFixedSize(true);
// 使用垂直线性布局管理器
LinearLayoutManager mLayoutManager = new LinearLayoutManager(this);
mLayoutManager.setOrientation(LinearLayoutManager.HORIZONTAL);
lv.setLayoutManager(mLayoutManager);
ListViewAdapter adapter = new ListViewAdapter(this,titles,imgs);
lv.setAdapter(adapter);
adapter.notifyDataSetChanged();
}
}
- ListViewAdapter的代码内容如下
package com.example.administrator.listviewdemo1.adapter;
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 android.widget.Toast;
import com.example.administrator.listviewdemo1.R;
import java.util.ArrayList;
/**
* Created by Administrator on 2016/7/15.
*/
public class ListViewAdapter extends RecyclerView.Adapter<ListViewAdapter.ViewHolder>{
private Context mContext;
private ArrayList<String> mDatas;
private int[] mIms;
public ListViewAdapter(Context context,ArrayList<String> data,int[] img){
this.mContext = context;
this.mDatas = data;
this.mIms = img;
}
/**
* 相当于BaseAdapter的ViewHolder
*/
public static class ViewHolder extends RecyclerView.ViewHolder{
TextView tv;
ImageView img;
public ViewHolder(View itemView) {
super(itemView);
tv = (TextView) itemView.findViewById(R.id.title);
img = (ImageView) itemView.findViewById(R.id.img);
}
}
/**
* 相当于getView()
* @param parent
* @param viewType
* @return
*/
@Override
public ListViewAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(mContext).inflate(R.layout.list_adapter,null);
ViewHolder holder = new ViewHolder(view);
return holder;
}
/**
* 在这里进行控件的赋值
* @param holder
* @param position
*/
@Override
public void onBindViewHolder(ListViewAdapter.ViewHolder holder, final int position) {
holder.img.setImageResource(mIms[position]);
holder.tv.setText(mDatas.get(position));
//设置监听
holder.img.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(mContext,position+"个",Toast.LENGTH_SHORT).show();
}
});
}
/**
* 相当于BaseAdapter的getItemCount()
* @return
*/
@Override
public int getItemCount() {
return mDatas.size();
}
}
以上就是RecyclerView的简单用法,