gpt4 book ai didi

java - RecycleViewer 没有连接适配器。网址也出错

转载 作者:行者123 更新时间:2023-11-30 05:08:47 26 4
gpt4 key购买 nike

我正在创建一个应用程序,我想在其中使用改造调用 API。并在回收查看器中显示对象。当我尝试使用调用 API 并将对象放入回收查看器的方法时出现错误。

下面是寻呼机适配器的代码。

public class IssueAdapter2 extends RecyclerView.Adapter<IssueAdapter2.SymptomViewHolder> {
private ArrayList<Issue> dataList;

public IssueAdapter2(ArrayList<Issue> dataList){
this.dataList = dataList;
}

@NonNull
@Override
public SymptomViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
LayoutInflater layoutInflater = LayoutInflater.from(viewGroup.getContext());
View view = layoutInflater.inflate(R.layout.row_item, viewGroup, false);
return new SymptomViewHolder(view);
}

@Override
public void onBindViewHolder(@NonNull SymptomViewHolder symptomViewHolder, int position) {
symptomViewHolder.symptomTitle.setText(dataList.get(position).getName());

}

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

public class SymptomViewHolder extends RecyclerView.ViewHolder {

TextView symptomTitle;

public SymptomViewHolder(@NonNull View itemView) {
super(itemView);
symptomTitle = itemView.findViewById(R.id.IssueName);
}
}

以及调用改造的代码和创建回收 View 的方法:

public class MainActivity extends AppCompatActivity {

private Button btnDiagnosis;
private RadioButton radioButton;
public TextView textResults;
private RecyclerView recyclerView;
private IssueAdapter2 issueAdapter2;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.quiz_layout);

btnDiagnosis = findViewById(R.id.bDiagnosis);

radioButton = findViewById(R.id.feverYes);

btnDiagnosis.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startButtonActivity();
}
});


}

public void startButtonActivity(){
//create Retrofit instance
setContentView(R.layout.results);
//textResults = findViewById(R.id.resultsview);

Retrofit.Builder builder = new Retrofit.Builder()
.baseUrl("https://priaid-symptom-checker-v1.p.mashape.com/diagnosis/")
.addConverterFactory(GsonConverterFactory.create());

Retrofit retrofit = builder.build();

//get Symptoms


JsonPlaceHolderApi jsonPlaceHolderApi = retrofit.create(JsonPlaceHolderApi.class);
Call<ArrayList<Issue>> call = jsonPlaceHolderApi.searchForIssues(

"male",
"10,5",
"en-gb",
1994);

Log.wtf("URL Called", call.request().url() + "");
call.enqueue(new Callback<ArrayList<Issue>>() {
@Override
public void onResponse(Call<ArrayList<Issue>> call, Response<ArrayList<Issue>> response) {

if(response.isSuccessful()){
configViews(response.body());
}
}
@Override
public void onFailure(Call<ArrayList<Issue>> call, Throwable t) {
Toast.makeText(MainActivity.this, "Something went wrong...Error message: " + t.getMessage(),
Toast.LENGTH_LONG).show();
}
});
}

private void configViews(ArrayList<Issue> issueArrayList) {



recyclerView = findViewById(R.id.recyclerview);

issueAdapter2 = new IssueAdapter2(issueArrayList);
recyclerView.setHasFixedSize(true);
recyclerView.setRecycledViewPool(new RecyclerView.RecycledViewPool());
RecyclerView.LayoutManager layoutManager = new LinearLayoutManager(recyclerView.getContext());
recyclerView.setLayoutManager(layoutManager);
recyclerView.setAdapter(issueAdapter2);

}

}

我遇到的错误:

E/URL Called: https://priaid-symptom-checker-v1.p.mashape.com/diagnosis?Gender=male&Symptoms=10,5&Language=en-gb&Year%20of%20Birth=1994

E/RecyclerView:没有连接适配器;跳过布局

如果有人能告诉我如何克服这个问题以及我的 recycleview 如何获得适配器,请告诉我

非常感谢!

最佳答案

最有可能来自 call.enqueue(...) 的回调不会在主线程上调用。在 Android 上,这是唯一可以更新 UI 的地方。在主线程上设置适配器应该可以解决您的问题:

 private void configViews(ArrayList<Issue> issueArrayList) {
recyclerView = findViewById(R.id.recyclerview);
issueAdapter2 = new IssueAdapter2(issueArrayList);
recyclerView.setHasFixedSize(true);
recyclerView.setRecycledViewPool(new RecyclerView.RecycledViewPool());
RecyclerView.LayoutManager layoutManager = new LinearLayoutManager(recyclerView.getContext());
runOnUiThread(new Runnable() {
@Override
public void run() {
recyclerView.setLayoutManager(layoutManager);
recyclerView.setAdapter(issueAdapter2);
}
);
}

关于java - RecycleViewer 没有连接适配器。网址也出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54055354/

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