Android 如何在二级布局中获取整型json值(回收器视图的末尾)
这是我的json:Android 如何在二级布局中获取整型json值(回收器视图的末尾),android,json,android-recyclerview,Android,Json,Android Recyclerview,这是我的json: { "status": "ok", "count": 10, "count_total": 65, "pages": 7, "posts": [ { "id": 3115, "type": "post", . . . }]} 想要在“我的回收器”视图的末尾获取页面值: 这是获取json的AsyncTask函数: if (jsonStr != null) { try {
{
"status": "ok",
"count": 10,
"count_total": 65,
"pages": 7,
"posts": [
{
"id": 3115,
"type": "post",
.
.
.
}]}
想要在“我的回收器”视图的末尾获取页面值:
这是获取json的AsyncTask函数:
if (jsonStr != null) {
try {
JSONObject jsonObj = new JSONObject(jsonStr);
int id=jsonObj.getInt("pages");
JSONArray posts = jsonObj.getJSONArray("posts");
for (int i = 0; i < posts.length(); i++) {
JSONObject c = posts.getJSONObject(i);
jsonContent jsonContent=new jsonContent();
jsonContent.title=c.getString("title");
//img
JSONObject post_img=c.getJSONObject("thumbnail_images");
for (int j=0;j<post_img.length();j++)
{
JSONObject v=post_img.getJSONObject("mom-portfolio-two");
jsonContent.imgurl=v.getString("url");
}
jsonContent.pages=id;
listcontent.add(jsonContent);
}
从这一行:
viewHolder.pages.setText(Integer.toString(jcontent.get(i).pages));
pages是我的文本视图,用于在第二个layount end of recycler视图中显示pages int value我从您的代码中找到了一个片段
@Override
public int getItemCount() {
return jcontent.size()+1;
}
换成
@Override
public int getItemCount() {
return jcontent.size();
}
这是因为列表计数从0开始,而不是从1开始
如果您正在尝试从10个大小的列表中获取10。它将抛出数组超出绑定的异常
你应该得到9才能得到第10个元素
if(i == jcontent.size()) {
viewHolder.buttonnext.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(context, "next", Toast.LENGTH_SHORT).show();
}
});
viewHolder.buttonprev.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(context, "pre", Toast.LENGTH_SHORT).show();
}
});
viewHolder.cardView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
}
});
viewHolder.pages.setText(Integer.toString(jcontent.get(i).pages));
}
else {
viewHolder.title.setText(jcontent.get(i).title);
Picasso.with(context).load(jcontent.get(i).imgurl).resize(300, 400).into(viewHolder.imageView);
}
}
在这段代码中,您将获得jcontent.get(i)这将产生问题
编辑2
似乎页面对于每个回收项目都是常量,然后从主JSON对象中提取它并作为单独的对象传递,或者从任何其他对象中获取它 像
谢谢我从你的代码中找到了一个片段
@Override
public int getItemCount() {
return jcontent.size()+1;
}
换成
@Override
public int getItemCount() {
return jcontent.size();
}
这是因为列表计数从0开始,而不是从1开始
如果您正在尝试从10个大小的列表中获取10。它将抛出数组超出绑定的异常
你应该得到9才能得到第10个元素
if(i == jcontent.size()) {
viewHolder.buttonnext.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(context, "next", Toast.LENGTH_SHORT).show();
}
});
viewHolder.buttonprev.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(context, "pre", Toast.LENGTH_SHORT).show();
}
});
viewHolder.cardView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
}
});
viewHolder.pages.setText(Integer.toString(jcontent.get(i).pages));
}
else {
viewHolder.title.setText(jcontent.get(i).title);
Picasso.with(context).load(jcontent.get(i).imgurl).resize(300, 400).into(viewHolder.imageView);
}
}
在这段代码中,您将获得jcontent.get(i)这将产生问题
编辑2
似乎页面对于每个回收项目都是常量,然后从主JSON对象中提取它并作为单独的对象传递,或者从任何其他对象中获取它 像
谢谢你的列表内容大小是10(0到9)。
在onBindViewHolder中选中此行
if(i == jcontent.size()){ //here i == 10
.......
.......
viewHolder.pages.setText(Integer.toString(jcontent.get(i).pages));
//here you are accessing the 10 element of jcontent.
}
您的列表内容大小为10(0到9)。
在onBindViewHolder中选中此行
if(i == jcontent.size()){ //here i == 10
.......
.......
viewHolder.pages.setText(Integer.toString(jcontent.get(i).pages));
//here you are accessing the 10 element of jcontent.
}
我想你没有正确理解我的观点。如果我这样做,我的回收器视图不会显示回收器的二级布局末端。我的改变不是像什么?我这样做:viewHolder.pages.setText(Integer.toString(jcontent.pages));但是当删除页面时无法识别页面。实际上,你想实现什么?若你们的json对象只包含10个元素,那个么你们在第11页显示了什么,并没有任何细节?我在问题中明确地告诉了我的问题。当我删除这行viewHolder.pages.setText(Integer.toString(jcontent.pages));我的应用程序运行良好,并显示10cardview+我的第二布局以及您正在使用的第二布局jcontent.get(i)。没有具有该引用的元素。如果您没有执行这一行,那么您的代码绝对是完美的,您认为您没有正确理解我的观点。如果我这样做,我的回收器视图不会显示回收器的二级布局末端。我的改变不是像什么?我这样做:viewHolder.pages.setText(Integer.toString(jcontent.pages));但是当删除页面时无法识别页面。实际上,你想实现什么?若你们的json对象只包含10个元素,那个么你们在第11页显示了什么,并没有任何细节?我在问题中明确地告诉了我的问题。当我删除这行viewHolder.pages.setText(Integer.toString(jcontent.pages));我的应用程序运行良好,并显示10cardview+我的第二布局以及您正在使用的第二布局jcontent.get(i)。没有具有该引用的元素。如果您没有执行这一行,那么您的代码绝对是完美的,那么我如何修复它呢?如果您想要检索页数,只需对i==10执行jcontent.get(i-1.pages)。那么我如何修复它呢?如果您想要检索页数,只需对i==10执行jcontent.get(i-1.pages)。