如何解决我做了一个适配器,但它无法连接
我制作了一个适配器来制作回收器视图。但是会出现适配器未连续连接的错误。我确实做到了,为什么我不能?我预测这是一个线程问题,但我不知道如何解决它。请帮帮我。
public class RoomActivity extends AppCompatActivity {
private RecyclerView rvFloor;
private FloorAdapter floorAdapter;
public ArrayList<FloorData> globalfloors = new ArrayList<>();
int totalFloor;
private RoomApi roomApi;
private DormitoryData dormitoryData;
private DormitoryApi dormitoryApi;
static SharedPreferences pref;
Retrofit retrofit;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_room);
pref = getSharedPreferences("token",0);
init();
rvFloor = findViewById(R.id.rvFloors);
}
private void init(){
roomApi = new Retrofit.Builder()
.baseUrl(getString(R.string.base_url))
.addConverterFactory(GsonConverterFactory.create())
.build()
.create(RoomApi.class);
dormitoryApi = new Retrofit.Builder()
.baseUrl(getString(R.string.base_url))
.addConverterFactory(GsonConverterFactory.create())
.build()
.create(DormitoryApi.class);
Call<DormitoryData> callGetDormitory = dormitoryApi.get_dormitory(getToken());
Callback<DormitoryData> callback = new Callback<DormitoryData>() {
@Override
public void onResponse(Call<DormitoryData> call,Response<DormitoryData> response) {
dormitoryData = response.body();
totalFloor = dormitoryData.getStory();
for(int i=0; i< totalFloor; i++){
FloorData temp = new FloorData();
temp.setFloorNum(i+1);
globalfloors.add(temp);
}
for(int i = 0; i<totalFloor; i++){
//해당 층에 있는 방들을 불러옵니다. 없을 수도 있어요.
Call<List<RoomData>> callRoomListByFloor = roomApi.getRooms_byFloor(getToken(),i+1);
if (callRoomListByFloor == null)
continue;
final FloorData floor = globalfloors.get(i);
//층에 있는 방들 정보를 불러옵니다.
Callback<List<RoomData>> callback2 = new Callback<List<RoomData>>() {
@Override
public void onResponse(Call<List<RoomData>> call,Response<List<RoomData>> response) {
floor.setRooms((ArrayList<RoomData>) response.body());
floorAdapter = new FloorAdapter(globalfloors,RoomActivity.this);
linearlayoutmanager manager = new linearlayoutmanager(RoomActivity.this);
rvFloor.setLayoutManager(manager);
rvFloor.setAdapter(floorAdapter);
floorAdapter.setonItemClickListener(new FloorAdapter.OnItemClickListener() {
@Override
public void onItemClick(View v,int position) {
FloorData floor = globalfloors.get(position);
RoomData newRoom = new RoomData();
floor.finalRoomNum++;
newRoom.setRoomNum(floor.finalRoomNum);
floor.rooms.add(newRoom);
rvFloor.setAdapter(floorAdapter);
JsonObject json = new JsonObject();
json.addProperty("floor",position+1);
json.addProperty("roomNum",newRoom.getRoomNum());
Call<ResponseData> call = roomApi.add_room(getToken(),json);
call.enqueue(new Callback<ResponseData>() {
@Override
public void onResponse(Call<ResponseData> call,Response<ResponseData> response) {
if(response.isSuccessful()){
Toast.makeText(RoomActivity.this,response.message(),Toast.LENGTH_SHORT).show();
if(response.body() == null){
Toast.makeText(RoomActivity.this,"알 수 없는 에러입니다. 개발자에게 문의하세요",Toast.LENGTH_LONG).show();
return;
}
}else{
Toast.makeText(RoomActivity.this,response.message().toString(),Toast.LENGTH_LONG).show();
}
}
@Override
public void onFailure(Call call,Throwable t) {
Log.e( "onFailure: ",t.getMessage() );
}
});
}
});
}
@Override
public void onFailure(Call<List<RoomData>> call,Throwable t) {
Toast.makeText(RoomActivity.this,t.getMessage(),Toast.LENGTH_LONG).show();
}
};
callRoomListByFloor.enqueue(callback2);
}
}
@Override
public void onFailure(Call<DormitoryData> call,Throwable t) {
Toast.makeText(getApplicationContext(),Toast.LENGTH_LONG).show();
}
};
callGetDormitory.enqueue(callback);
}
public static String getToken(){
return pref.getString("token","");
}
}
错误信息如下。 RecyclerView:没有附加适配器;跳过布局
解决方法
嗨,我认为错误已经说明这里出了什么问题。您是否尝试将适配器添加到 RecyclerView
的 rvFloor
onCreate
?
如果没有,你可以做的是设置一个新的适配器来按需提供子视图。由于在 onCreate
上设置一次适配器就可以完成这项工作,我认为您还应该在定义视图后调用 init()
rvFloor.setAdapter(floorAdapter);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。