RecyclerView只能显示一行的问题

最近想把listView换成RecyclerView,但是遇到了只能显示一行的问题,如图:
这里写图片描述
代码如下:
package com.app.eaju.recyleviewdemo;

import android.app.Activity;
import android.os.Bundle;
import android.support.v7.widget.DefaultItemAnimator;
import android.support.v7.widget.LinearLayoutManager;
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;
import java.util.List;

public class MainActivity extends Activity {
RecyclerView mr;
List list;
Myadapter adapter;

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

private void initData() {
    list = new ArrayList<String>();
    for (int i = 0; i < 30; i++) {
        list.add("" +  i);

    }

}

private void initView() {
    mr = (RecyclerView) findViewById(R.id.rv);
    //设置布局管理器
    mr.setLayoutManager(new LinearLayoutManager(this));
    //设置adapter
    mr.setAdapter(new Myadapter());
    //设置item增加移除动画
    mr.setItemAnimator(new DefaultItemAnimator());
    //添加分割线
    mr.addItemDecoration(new DividerItemDecoration(
            this, DividerItemDecoration.HORIZONTAL_LIST));

}


class Myadapter extends RecyclerView.Adapter<Myadapter.MyViewHolder> {

    @Override
    public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        MyViewHolder holder = new MyViewHolder(LayoutInflater.from(
                MainActivity.this).inflate(R.layout.item_recycle, parent,
                false));
        return holder;
    }

    @Override
    public void onBindViewHolder(MyViewHolder holder, int position) {
        holder.tv.setText(list.get(position));
    }

    @Override
    public int getItemCount() {
        return (list == null) ? 0 : list.size();
    }

    class MyViewHolder extends RecyclerView.ViewHolder {

        TextView tv;

        public MyViewHolder(View view) {
            super(view);
            tv = (TextView) view.findViewById(R.id.tv_item_recycle);
        }
    }
}

}
经过查找原因,是因为 MyViewHolder holder = new MyViewHolder(LayoutInflater.from(
MainActivity.this).inflate(R.layout.item_recycle, parent,
false));

中parent限制了反射后布局的显示,改为以下即可:
MyViewHolder holder = new MyViewHolder(LayoutInflater.from(MainActivity.this).inflate(R.layout.item_recycle, null));

原因分析:
其实,在显示一行的时候其余的行也被显示了,只不过因为每行都是match_parent得到了,也就是占了满屏,所以我们看到的只有一行,你想上啦动,就会看到其他行了.

此种显示一行的状态状态在listView中也有出现过,不过是确实是只一行,当时是因为holder=(ViewHolder)converView.getag();后的大括号写在了return convertView之后

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值