【问题标题】:RecyclerView GridLayoutManager: span count is defaulted to 1RecyclerView GridLayoutManager:跨度计数默认为1
【发布时间】:2017-03-08 05:52:57
【问题描述】:

虽然我将 gridlayoutmanager 跨度计数定义为 2.. 只有一列是模拟器的结果。我尝试在 XML 中更改卡片的宽度,但那里没有好处.. 主要活动:

protected void onCreate(Bundle savedInstanceState) {
    
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    pb = (ProgressBar) findViewById(R.id.pb1);
    pause = (ImageButton) findViewById(R.id.pause);
    refresh = (ImageButton) findViewById(R.id.refresh);
    sb = (SeekBar) findViewById(R.id.seekBar);
    pause.setVisibility(pause.INVISIBLE);
    sb.setVisibility(sb.INVISIBLE);
    mediaPlayer = new MediaPlayer();
    mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
   lmanager = new LinearLayoutManager(this);
     gmanager = new GridLayoutManager(this,2);

    rv = (RecyclerView) findViewById(R.id.rv1);
   //initializeRecyclerView();
    rv.setLayoutManager(lmanager);
    pb.setVisibility(pb.VISIBLE);
    if(isconnected()) {
        new Podcast_async(this).execute("https://www.npr.org/rss/podcast.php?id=510298");
    }
}

网格布局 XML:

<android.support.v7.widget.CardView
    android:layout_below="@+id/tool_bar"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true"
    android:layout_height="150dp"
    android:paddingRight="10dp"
    android:paddingBottom="10dp"
    android:paddingLeft="5dp"
    android:paddingTop="5dp"
    android:layout_width="150dp">

    <ImageView
        android:layout_width="match_parent"
        android:layout_height="115dp"

        android:id="@+id/imageView4" />

    <ImageButton
        android:layout_width="match_parent"
        android:layout_height="118dp"

        android:background="@null"
        app:srcCompat="@drawable/playcircle"
        android:id="@+id/imageButton2" />

    <TextView
        android:text="TextView"
        android:layout_width="match_parent"
        android:layout_marginTop="120dp"

        android:id="@+id/textView4"
        android:layout_height="30dp"
        android:gravity="center_horizontal" />
</android.support.v7.widget.CardView>

Emulator

【问题讨论】:

  • 为什么要将 LinearLayoutManager 添加到 recyclerview 而不是 GridLayoutManager ?检查您的代码并将其更改为 gmanager 而不是 lmanager
  • lmanager = new LinearLayoutManager(this); 删除此行并使用此更新 `rv.setLayoutManager(gmanager);`
  • 我需要在线性布局和网格布局之间切换,所以我也需要 LinearLayoutManager
  • 好的,明白了....我没有将recyclerview设置为网格!谢谢

标签: android android-recyclerview gridlayoutmanager


【解决方案1】:

使用代码并为 recyclerview 设置 Adapter,然后在 Adapter 中扩展 gridlayout.xml。

RecyclerView.LayoutManager layoutmanager = new GridLayoutManager(this, 2);
    recyclerview.setLayoutManager(layoutmanager);

适配器使用你的布局

    @Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.GridLayout.xml, parent, false);
    return new Adapter.ViewHolder(view);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多