无法显示超过 2 个回收站网格视图

时间:2021-04-05 10:00:44

标签: android android-recyclerview android-gridview

我正在 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"));
}

    

2 个答案:

答案 0 :(得分:0)

这是因为你的gridLayoutManager方向。
您有 2 种选择来显示所有项目:

  1. 将方向更改为垂直

  2. 将您的 recyclerView 宽度更改为 match-parent

答案 1 :(得分:0)

就这么办

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。