Retrofti Json RecyclerView:没有连接适配器;
我在这个URL把我的JSON数据= http://api.myjson.com/bins/1fblznRetrofti Json RecyclerView:没有连接适配器;
它包含位置数据和有5场,他们三人是字符串,其中两个是双打。
我想在recyclerview中展示它。
但我不断收到此错误。
我搜索了很多,但我无法得到答案。
这里是我的代码:
MainActivityRecyc
public class MainActivityRecyc extends AppCompatActivity {
private static final String TAG = MainActivityRecyc.class.getSimpleName();
private RecyclerView recyclerView;
private ArrayList<Locations> data;
private DataAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main_recyc);
final RecyclerView recyclerView = (RecyclerView) findViewById(R.id.card_recycler_view);
recyclerView.setAdapter(adapter);
recyclerView.setLayoutManager(new LinearLayoutManager(this));
RequestInterface requestInterface =
JsonClient.getClient().create(RequestInterface.class);
Call<JSONResponse> call = requestInterface.getJson();
call.enqueue(new Callback<JSONResponse>() {
@Override
public void onResponse(Call<JSONResponse> call,
Response<JSONResponse> response) {
int statusCode = response.code();
List<Locations> data = response.body().getData();
recyclerView.setAdapter(new DataAdapter(data, R.layout.card_row, getApplicationContext())); }
@Override
public void onFailure(Call<JSONResponse> call, Throwable t) {
} }); } }
位置
public class Locations {
private String name;
private String pname;
private String bicycleno;
private Double lat;
private Double lang;
public Locations(String name, String pname, String bicycleno,
Double lat, Double lang){
this.name= name;
this.pname= pname;
this.bicycleno= bicycleno;
this.lat= lat;
this.lang= lang;
}
public String getName() {
return name;
}
public void setName (String name){
this.name=name;
}
public String getPname() {
return pname;
}
public void setPname(String pname){
this.pname=pname;
}
public String getBicycleno() {
return bicycleno;
}
public void setBicycleno (String bicycleno){
this.bicycleno=bicycleno;
}
public Double getLat() {
return lat;
}
public void setLat (Double lat){
this.lat=lat;
}
public Double getLang() {
return lang;
}
public void setLang (Double lang){
this.lang=lang;
} }
RequestInterface
public interface RequestInterface {
@Headers("Content-Type:application/json")
@GET("/bins/1fblzn/")
Call<JSONResponse> getJson();
}
DataAdapter的
public class DataAdapter extends RecyclerView.Adapter<DataAdapter.ViewHolder>{
private List<Locations> data=new ArrayList<>();
private int rowLayout;
private Context context;
public DataAdapter(List<Locations> data ,int rowLayout, Context context){
this.data = data;
this.rowLayout = rowLayout;
this.context = context;
}
@Override
public DataAdapter.ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
View view = LayoutInflater.from(viewGroup.getContext()).inflate(rowLayout, viewGroup, false);
return new ViewHolder(view);
}
@Override
public void onBindViewHolder(ViewHolder viewHolder, final int i) {
Locations locations= data.get(i);
viewHolder.name.setText(data.get(i).getName());
viewHolder.pname.setText(data.get(i).getPname());
viewHolder.bicycleno.setText(data.get(i).getBicycleno());
viewHolder.lat.setText(data.get(i).getLat().toString());
viewHolder.lang.setText(data.get(i).getLang().toString());
}
@Override
public int getItemCount() {
return data.size();
}
public class ViewHolder extends RecyclerView.ViewHolder{
private TextView name,pname,bicycleno, lat, lang;
public ViewHolder(View view) {
super(view);
name = (TextView)view.findViewById(R.id.name);
pname = (TextView)view.findViewById(R.id.pname);
bicycleno = (TextView)view.findViewById(R.id.bicycleno);
lat = (TextView)view.findViewById(R.id.lat);
lang = (TextView)view.findViewById(R.id.lang);
} } }
JSONResponse
public class JSONResponse {
@SerializedName("data")
@Expose
private List<Locations> data =new ArrayList<>();
public List<Locations> getData() {
return data;
}
JsonClient
public class JsonClient {
public static final String BASE_URL = "https://api.myjson.com/";
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;
}}
您在您的实现失踪LinearLayoutManager
,使用此代码,而不是
DataAdapter adapter = new DataAdapter(data, R.layout.card_row, getApplicationContext()); recyclerView.setLayoutManager(newLinearLayoutManager(getContext())); recyclerView.setAdapter(adapter);
希望这会有所帮助,快乐编纂!
它没有工作。我也看到这一行错误:无效的包名称:也许你没有包括一个PendingIntent的额外 –
的问题是在你的onCreate
的第四行:
recyclerView.setAdapter(adapter);
你路过此地的适配器仅仅是因为null
你从来没有赋值到外地private DataAdapter adapter;
。在上述第四行之前,添加代码以实例化适配器。因为你没有在这一点上的任何数据,只是通过空数据:
adapter = new DataAdapter(Collections.EMPTY_LIST, R.layout.card_row, getApplicationContext())
然后,当你从请求获取数据,只需更新适配器的数据和呼叫notifyDataChanged()
更高版本;
它没有工作。我也看到这一行错误:无效的包名称:也许你没有在extras中包含PendingIntent –
什么错误?错误指向哪行代码? –
@MehmetKologlu它没有指定任何行。问题是,而不是一个json数据列表我得到一个空白屏幕。我看到的两个错误是无效的软件包名称:也许你没有在extras和RecyclerView中包含PendingIntent:没有附加适配器; –