【问题标题】:Not able to display more than 2 recycler grid views无法显示超过 2 个回收站网格视图
【发布时间】:2021-04-05 10:00:44
【问题描述】:

我正在 android studio 上制作一个应用程序。我想使用网格布局管理器在回收站视图中显示项目。我将三个元素添加到要显示回收器视图的数组中。但是当我运行应用程序时,应用程序只显示两个项目。我不知道发生了什么。我已将回收站视图的高度设置为包装内容仍然遇到此问题。

这是我的代码:-

ModelClass.java:-

public class ModelClass {
private String recyc_show_note;


ModelClass(String recyc_show_note){
    this.recyc_show_note = recyc_show_note;
}

public String getRecyc_show_note() {
    return recyc_show_note;
}}

Adapter.java:-

 public class Adapter extends RecyclerView.Adapter<Adapter.ViewHolder> {
private List<ModelClass> recyc_cust_notes;

public Adapter (List<ModelClass>recyc_cust_notes){
    this.recyc_cust_notes = recyc_cust_notes;
}

@NonNull
@Override

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

@Override
public void onBindViewHolder(@NonNull Adapter.ViewHolder holder, int position) {
    String recyc_show_note = recyc_cust_notes.get(position).getRecyc_show_note();


    holder.setData(recyc_show_note);
}

@Override
//returns list size
public int getItemCount() {
    return recyc_cust_notes.size();
}

public class ViewHolder extends RecyclerView.ViewHolder{
      private TextView recycler_view_note;
    public ViewHolder(@NonNull View itemView) {
        super(itemView);
          recycler_view_note = itemView.findViewById(R.id.recyc_show_note);
    }

    public void setData(String recyc_show_note) {
          recycler_view_note.setText(recyc_show_note);
    }
}
}

MainActivity.java:-

RecyclerView recyclerView;
List<ModelClass>recyc_cust_notes;
Adapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main)
    SharedPreferences getSharedPreference = getSharedPreferences("My Notes", MODE_PRIVATE);
    String note = getSharedPreference.getString("Note", null);
    initData();
    initRecyclerView();
}

private void initRecyclerView() {
    recyclerView = findViewById(R.id.recycler_view);
    GridLayoutManager gridLayoutManager = new GridLayoutManager(getApplicationContext(),2);
    gridLayoutManager.setOrientation(RecyclerView.HORIZONTAL);
    recyclerView.setLayoutManager(gridLayoutManager);
    adapter = new Adapter(recyc_cust_notes);
    recyclerView.setAdapter(adapter);
    adapter.notifyDataSetChanged();
}

private void initData() {
    recyc_cust_notes = new ArrayList<>();
    SharedPreferences getSharedPreference = getSharedPreferences("My Notes", MODE_PRIVATE);
    String note = getSharedPreference.getString("Note", null);
    recyc_cust_notes.add(new ModelClass(note));
    recyc_cust_notes.add(new ModelClass("note"));
    recyc_cust_notes.add(new ModelClass("sai"));
}

    

【问题讨论】:

    标签: android android-recyclerview android-gridview


    【解决方案1】:

    就这样吧

    recyclerView.setLayoutManager(new GridLayoutManager(this, number_of_cols));

    在 XML 中

    <androidx.recyclerview.widget.RecyclerView
        android:id="@+id/rv_Grid"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>
    

    Java 代码

    int cols = 3; // length of cols
    
    RecyclerView recyclerView = findViewById(R.id.rv_Grid);
    recyclerView.setLayoutManager(new GridLayoutManager(this, cols));
    adapter = new MyRecyclerViewAdapter(this, list);
    recyclerView.setAdapter(adapter);
    

    并删除 setOrientation。

    【讨论】:

      【解决方案2】:

      这是因为您的gridLayoutManager 定位。
      您有 2 个选择来显示所有项目:

      1. 将方向更改为垂直

      2. 将您的 recyclerView 宽度更改为匹配父级

      【讨论】:

        猜你喜欢
        • 2015-02-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-03-24
        • 1970-01-01
        • 2016-08-03
        相关资源
        最近更新 更多