如何在android中排列RecyclerView上的数据?

Posted

技术标签:

【中文标题】如何在android中排列RecyclerView上的数据?【英文标题】:How to arrange the data on RecycleView in android? 【发布时间】:2016-12-27 06:33:33 【问题描述】:

我想使用 RecycleView 来显示我的数据数组。

这是我的 Adapater 类,它在视图上设置数据。

public class DataAdapter extends RecyclerView.Adapter<DataAdapter.MyViewHolder>

        private Context context;
        private List<Pojo> dataList;

        public DataAdapter(Context context, List<Pojo> dataList) 
            this.context = context;
            this.dataList = dataList;
        

        @Override
        public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) 
            View view= LayoutInflater.from(parent.getContext()).inflate(R.layout.activity_main,parent,false);
            return new MyViewHolder(view);
        

        @Override
        public void onBindViewHolder(MyViewHolder holder, int position) 
            holder.categoryTV.setText(dataList.get(position).getGameName());
        

        @Override
        public int getItemCount() 

            return dataList.size();
        

        public class MyViewHolder extends RecyclerView.ViewHolder

            public TextView categoryTV;

            public MyViewHolder(View itemView) 
                super(itemView);
                categoryTV = (TextView) itemView.findViewById(R.id.text);
            
        
    

这是我的 activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_
    android:layout_
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:id="@+id/rellayout"
    tools:context="com.acknotech.kiran.retrofit_second.MainActivity">

    <TextView
        android:layout_
        android:layout_
        android:id="@+id/text"/>

    <android.support.v7.widget.RecyclerView
        android:id="@+id/my_recycler_view"
        android:scrollbars="vertical"
        android:layout_
        android:layout_>

        </android.support.v7.widget.RecyclerView>
</RelativeLayout>

这是 MainActivity..

public class MainActivity extends AppCompatActivity 

    private RecyclerView recyclerView;
    private DataAdapter dataAdapter;
    private List<Pojo> dataArrayList;

    @Override
    protected void onCreate(Bundle savedInstanceState) 
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initViews();
    

    private void initViews()
        recyclerView=(RecyclerView) findViewById(R.id.my_recycler_view);
        recyclerView.setLayoutManager(new LinearLayoutManager(getApplicationContext()));
        loadJSON();
    

    private void loadJSON()
        dataArrayList = new ArrayList<>();
        Retrofit retrofit=new Retrofit.Builder().baseUrl("my url").addConverterFactory(GsonConverterFactory.create()).build();
        AllGamesAPI requestInterface=retrofit.create(AllGamesAPI.class);

        Call<List<Pojo>> call= requestInterface.getJSON();
        call.enqueue(new Callback<List<Pojo>>() 
            @Override
            public void onResponse(Call<List<Pojo>> call, Response<List<Pojo>> response) 
                dataArrayList = response.body();
                dataAdapter=new DataAdapter(getApplicationContext(),dataArrayList);
                recyclerView.setAdapter(dataAdapter);
            

            @Override
            public void onFailure(Call<List<Pojo>> call, Throwable t) 
                    Log.e("Error",t.getMessage());
            

        );
    

当我尝试执行它时,总是一次只打印一个项目,但在 dataList 中我有 11 个项目。

如何使用 RecyclerView 获取页面中的所有项目?

感谢和问候

【问题讨论】:

使用 response.body() 函数检查更多选项 我正在向 DataAdapter 获取 11 项...我的疑问是如何通过 xml 数据处理适配器中的 11 项。 【参考方案1】:

您不应在 onCreateViewHolder 中扩展活动布局,而应仅为一项扩展布局(例如 android.R.layout.simple_list_item_1 或自定义项目)。此布局不应使用 match_parent 作为项目的高度。

【讨论】:

当我尝试替换您建议的布局时,我的应用程序正在崩溃并登录.. :: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TextView.setText( java.lang.CharSequence)' 在空对象引用上我在日志中看到了这个错误。我认为这是因为我正在返回该视图,并且 MyViewHolder 将其用作父视图。 您还必须调整 textview id。 (simple_list_item_1 使用 android.R.id.text1) 告诉我如何使用用户名和密码作为参数对 POST 执行相同的示例。 我不习惯改造。如果您有其他问题,请打开一个新问题。 非常感谢您。

以上是关于如何在android中排列RecyclerView上的数据?的主要内容,如果未能解决你的问题,请参考以下文章

Android13.0 UI开发——列表控件RecyclerView的横向布局排列实现

Android:在 RecyclerView 中拖放项目时如何有效更新 SQLite 数据库?

怎样才能使Android RecyclerView透明吗

如何在android的Recyclerview中显示更多[重复]

如何在 Android 的 RecyclerView 中显示来自 Firestore 的数据?

如何在 Android Studio 中禁用 recyclerview 特定数据?