我正在尝试构建一个应用程序,该应用程序应该使用开源体育API来获取足球(足球)锦标赛的列表并将其显示在回收人员视图上,出于某种原因,我收到了两个错误:
1-com.mad.footstatsE/RecyclView:未连接适配器;跳过布局
2-E/Main活动:com.google.gson.stream.MalformedJsonException:使用JsonReader.setLenient(true)在第1行接受格式错误的JSON第1列路径$
我无法从以前对相同问题的回答中使其工作,所以请您花时间看看我的代码:这是Mainactive:
public class MainActivity extends AppCompatActivity {
private static final String TAG = MainActivity.class.getSimpleName();
private final static String API_KEY = "w7c74newrykj8m57rda6xwrk";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Toast if the API key is empty
if(API_KEY .isEmpty()){
Toast.makeText(getApplicationContext(), R.string.api_empty_toast, Toast.LENGTH_SHORT).show();
}
final RecyclerView mRecyclerView = findViewById(R.id.tournaments_rv);
mRecyclerView.setLayoutManager(new LinearLayoutManager(this));
ApiInterface apiService =
ApiClient.getClient().create(ApiInterface.class);
Call<TournamentResponse> call = apiService.getTournamentList(API_KEY);
call.enqueue(new Callback<TournamentResponse>() {
@Override
public void onResponse(Call<TournamentResponse> call, Response<TournamentResponse> response) {
int statusCode = response.code();
List<Tournament_> tournaments = response.body().getResults();
mRecyclerView.setAdapter(new TournamentsAdapter(tournaments,R.layout.tournament_item,getApplicationContext()));
}
@Override
public void onFailure(Call<TournamentResponse> call, Throwable t) {
Log.e(TAG, t.toString());
}
});
}
这是TournamentsAdapter的代码:
public class TournamentsAdapter extends RecyclerView.Adapter<TournamentsAdapter.LeagueViewHolder>{
private List<Tournament_> mTournaments;
private int rowLayout;
private Context context;
public static class LeagueViewHolder extends RecyclerView.ViewHolder {
LinearLayout TournamentLayout;
TextView tournamentName, tournamentNation, tournamentYear;
public LeagueViewHolder(View v) {
super(v);
TournamentLayout = v.findViewById(R.id.league_layout);
tournamentName = v.findViewById(R.id.tournament_name);
tournamentNation = v.findViewById(R.id.tournament_nation);
tournamentYear = v.findViewById(R.id.tournament_year);
}
}
public TournamentsAdapter(List<Tournament_> tournaments, int rowLayout, Context context){
this.mTournaments = tournaments;
this.rowLayout = rowLayout;
this.context = context;
}
@Override
public TournamentsAdapter.LeagueViewHolder onCreateViewHolder(ViewGroup parent,
int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(rowLayout, parent, false);
return new LeagueViewHolder(view);
}
@Override
public void onBindViewHolder(LeagueViewHolder holder, final int position){
holder.tournamentName.setText(mTournaments.get(position).getName());
holder.tournamentNation.setText(mTournaments.get(position).getCurrentSeason().getYear());
holder.tournamentYear.setText(mTournaments.get(position).getCategory().getName());
}
@Override
public int getItemCount() {
return mTournaments.size();
}
这是ApiClient类的代码:
public class ApiClient {
public static final String BASE_URL = "https:api.sportradar.us/soccer-xt3/eu/en/";
private static Retrofit retrofit = null;
public static Retrofit getClient() {
if (retrofit==null) {
retrofit = new Retrofit.Builder()
.baseUrl(BASE_URL)
.addConverterFactory(GsonConverterFactory.create())
.build();
}
return retrofit;
}
由于某种原因,适配器没有连接,API也不工作,即使我看到了具有相同代码的示例和教程。谢谢。
问题在于你的链接。您为endpoint选择了错误的参数。您将永远不会得到json响应,因此Reformation无法为您解析该响应,您正在Reformation的响应中填充回收器视图,而Reformation从未调用该视图。
只需将xml更改为json即可获得正确的响应。
https://api.sportradar.us/soccer-xt3/eu/en/tournaments.xml?api_key=API_KEY代码
到
<代码>https://api.sportradar.us/soccer-xt3/eu/en/tournaments.json?api_key=API_KEY
通用域名格式。疯狂的footstats E/RecyclerView:未连接适配器;正在跳过布局
我想让你清楚,这不是错误,只是一个警告。当您没有在onCreate()中设置适配器时,就会发生这种情况。如果您在api响应到来时稍后设置适配器,则会出现此警告。您可以忽略这一点。如果您稍后设置适配器。
如果要解决此问题,应按照正确的方式设置回收视图。
(1) 初始化RecyclerView
List<Tournament_> tournaments;
TournamentsAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
.....
RecyclerView mRecycler = (RecyclerView) this.findViewById(R.id.yourid);
adapter = new TournamentsAdapter(tournaments,R.layout.tournament_item,getApplicationContext());
mRecycler.setAdapter(adapter);
}
(2) 获取数据后,调用notifyDataStateChanged
tournaments = response.body().getResults();
adapter.notifyDataStateChanged();
或者可以在适配器类中创建一个setList()方法,如下所示。
public void setList(ArrayList<Tournament_> list) {
if (list == null) return;
this.list = list;
notifyDataSetChanged();
}
并这样称呼它
adapter.setList(response.body().getResults());
在调度布局()中,我们可以发现其中存在错误:
void dispatchLayout() {
if(this.mAdapter == null) {
Log.e("RecyclerView", "No adapter attached; skipping layout");
} else if(this.mLayout == null) {
Log.e("RecyclerView", "No layout manager attached; skipping layout");
} else {
异步操作完成后,必须定义适配器。移动行:
mRecyclerView.setLayoutManager(new LinearLayoutManager(this));
异步响应如下:
call.enqueue(new Callback<TournamentResponse>() {
@Override
public void onResponse(Call<TournamentResponse> call, Response<TournamentResponse> response) {
int statusCode = response.code();
List<Tournament_> tournaments = response.body().getResults();
mRecyclerView.setLayoutManager(new LinearLayoutManager(this));
mRecyclerView.setAdapter(new TournamentsAdapter(tournaments,R.layout.tournament_item,getApplicationContext()));
}
@Override
public void onFailure(Call<TournamentResponse> call, Throwable t) {
Log.e(TAG, t.toString());
}
});
我制作了一个基本的购物清单应用程序,它利用回收器视图来显示列表项目。我正在尝试使用带有片段的导航添加设置屏幕。我遇到了我的回收器视图的问题 主活动.kt HomeFragment.kt 设置Fragment.kt activity_main.xml fragment\u home.xml navigation.xml 不确定是否需要更多信息。提前道歉-我是android studio的新手
知道是什么引起的吗?
当应用程序启动时,我得到一个空白屏幕,当我检查日志时,我得到:E/回收人员视图:没有连接适配器;跳过布局错误 我不知道为什么?任何想法,它似乎没有附加回收器视图或添加任何数据,我附加了Main活动、DataAdapter和数据类。 主要活动 数据适配器 下面是我的数据类,将从中提取数据 我ncluded.java 收集器和设置器 这是jsonResponse类,在接口中引用 感谢任何帮助。
我已经创建了一个片段,在该片段中有一个recycle view,但是当我的片段被加载时,什么也没有显示,它给出了这个错误“E/recycle view:没有连接适配器;跳过布局”。下面是适配器和片段类的代码,任何帮助都将不胜感激 适配器类: 片段类: fragment _ view _ all _ my _ recipes . XML view_all_recipe_item.xml
我想从火力点实时数据库显示图片。(带有加密图像(字符串))类似加密图像是“照片” 函数loadPhoto() 问题出在哪里?我连接adapter和recyclerview,并设置GridManager。
大家晚上好,我一直在寻找一个解决方案,以解决android studio的日志发送错误,使用RecyclerView显示JSON“产品”列表,并进行了改装。 我已经阅读了与此错误相关的问题,但我无法找到符合我需求的正确答案。 Android:回收人员视图:没有附加适配器;跳过布局 未连接适配器;跳过布局回收视图错误 recyclerview未连接适配器;跳过布局 未连接适配器;跳过布局onCrea