gpt4 book ai didi

android - JSON 数据未串行检索到 RecyclerView

转载 作者:太空狗 更新时间:2023-10-29 14:37:40 27 4
gpt4 key购买 nike

当第一次打开我的应用程序时,它连续显示 1-5 或 7。然后,我滚动我的 Recyclerview 它随机显示该项目。这是主要的 json 链接:http://services.hanselandpetal.com/feeds/flowers.json

查看图片了解更多详情

第一次打开时

当我滚动时

MainActivity.class

public class MainActivity extends AppCompatActivity {

String BASE_URL= "http://services.hanselandpetal.com/";
List<Example> examples=new ArrayList<>();
AdapterClass adapterClass;

RecyclerView recyclerView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
recyclerView=findViewById(R.id.recylerView_ID);
recyclerView.setHasFixedSize(true);

LinearLayoutManager linearLayoutManager=new LinearLayoutManager(getApplicationContext());
linearLayoutManager.setOrientation(LinearLayoutManager.VERTICAL);
recyclerView.setLayoutManager(linearLayoutManager);


Retrofit retrofit=new Retrofit.Builder()
.baseUrl(BASE_URL)
.addConverterFactory(GsonConverterFactory.create())
.build();

ApiCall apiCall=retrofit.create(ApiCall.class);

final Call<List<Example>> exampleCall=apiCall.getData();

exampleCall.enqueue(new Callback<List<Example>>() {
@Override
public void onResponse(Call<List<Example>> call, Response<List<Example>> response) {

if (response.code()==200){
examples=response.body();
adapterClass=new AdapterClass(MainActivity.this,examples);

recyclerView.setAdapter(adapterClass);}
}

@Override
public void onFailure(Call<List<Example>> call, Throwable t) {

}
});

}
}

AdapterClass.class

public class AdapterClass extends RecyclerView.Adapter<AdapterClass.viewModel> {
TextView name;
TextView catagory;
TextView count;
ImageView imageView;

List<Example>examples;
Context context;
public AdapterClass(Context context, List<Example> examples) {

this.context=context;
this.examples = examples;
Toast.makeText(context, ""+examples.size(), Toast.LENGTH_SHORT).show();
}
@NonNull
@Override
public viewModel onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
LayoutInflater layoutInflater=LayoutInflater.from(context);
View view=layoutInflater.inflate(R.layout.item_view,null);

return new viewModel(view);
}

@Override
public void onBindViewHolder(@NonNull viewModel viewModel, int i) {

name.setText(examples.get(i).getName());
catagory.setText(examples.get(i).getCategory());
count.setText(String.valueOf(examples.get(i).getProductId()));
String image_url = "http://services.hanselandpetal.com/photos/"+examples.get(i).getPhoto();
Picasso.get().load(image_url).resize(50,50).centerCrop().into(imageView);
}

@Override
public int getItemCount() {
return examples.size();
}

public class viewModel extends RecyclerView.ViewHolder {

public viewModel(@NonNull View itemView) {

super(itemView);
name=itemView.findViewById(R.id.name_TV);
catagory=itemView.findViewById(R.id.catagory_TV);
count=itemView.findViewById(R.id.serial_number_TV);
imageView=itemView.findViewById(R.id.imageView_ID);

}
}
}

我该如何解决这个问题?谢谢。

最佳答案

使用这个

@NonNull
@Override
public viewModel onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
LayoutInflater layoutInflater=LayoutInflater.from(context);
View view=layoutInflater.inflate(R.layout.item_view,viewGroup,false);

return new viewModel(view);
}

而不是这个

@NonNull
@Override
public viewModel onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
LayoutInflater layoutInflater=LayoutInflater.from(context);
View view=layoutInflater.inflate(R.layout.item_view,null);

return new viewModel(view);
}

更多信息阅读文档

inflate

public View inflate (XmlPullParser parser, 
ViewGroup root,
boolean attachToRoot)
  • 从指定的 XML 节点扩展一个新的 View 层次结构。如果有错误则抛出 InflateException。

Parameters

解析器

  • XmlPullParser:包含 View 层次结构描述的 XML dom 节点。

root

  • ViewGroup:可选 View 作为生成的层次结构的父 View (如果 attachToRoot 为真),或者只是一个为返回的层次结构的根提供一组 LayoutParams 值的对象(如果 attachToRoot 为假。)

    此值可能为空。

attachToRoot

  • boolean:膨胀的层次结构是否应该附加到根参数?如果为 false,root 仅用于为 XML 中的 Root View 创建正确的 LayoutParams 子类。

同时更改您的 onBindViewHolder

@Override
public void onBindViewHolder(@NonNull viewModel viewModel, int i) {

viewModel.name.setText(examples.get(i).getName());
viewModel.catagory.setText(examples.get(i).getCategory());
viewModel.count.setText(String.valueOf(examples.get(i).getProductId()));
String image_url = "http://services.hanselandpetal.com/photos/"+examples.get(i).getPhoto();
Picasso.get().load(image_url).resize(50,50).centerCrop().into(viewModel.imageView);
}

关于android - JSON 数据未串行检索到 RecyclerView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53405889/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com