2017-03-31 88 views
0

我在这个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; 
}} 
+0

什么错误?错误指向哪行代码? –

+0

@MehmetKologlu它没有指定任何行。问题是,而不是一个json数据列表我得到一个空白屏幕。我看到的两个错误是无效的软件包名称:也许你没有在extras和RecyclerView中包含PendingIntent:没有附加适配器; –

回答

0

您在您的实现失踪LinearLayoutManager,使用此代码,而不是

DataAdapter adapter = new DataAdapter(data, R.layout.card_row, getApplicationContext()); recyclerView.setLayoutManager(newLinearLayoutManager(getContext())); recyclerView.setAdapter(adapter);

希望这会有所帮助,快乐编纂!

+0

它没有工作。我也看到这一行错误:无效的包名称:也许你没有包括一个PendingIntent的额外 –

0

的问题是在你的onCreate的第四行:

recyclerView.setAdapter(adapter);

你路过此地的适配器仅仅是因为null你从来没有赋值到外地private DataAdapter adapter;。在上述第四行之前,添加代码以实例化适配器。因为你没有在这一点上的任何数据,只是通过空数据:

adapter = new DataAdapter(Collections.EMPTY_LIST, R.layout.card_row, getApplicationContext())

然后,当你从请求获取数据,只需更新适配器的数据和呼叫notifyDataChanged()更高版本;

+0

它没有工作。我也看到这一行错误:无效的包名称:也许你没有在extras中包含PendingIntent –

相关问题