如何在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中显示更多[重复]