我需要从具有Web服务的服务器返回列表。
但是当我运行项目时,请告诉我这个错误:
05-17 04:04:47.637 27144-27144 / com.learningandroid.a7learn.example.mr_enginner.main_traning E / RecyclerView:没有连接适配器;跳过布局 05-17 04:04:47.998 27144-27144 / com.learningandroid.a7learn.example.mr_enginner.main_traning E / RecyclerView:没有连接适配器;跳过布局
LastNewsActivity:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_last_news);
NewsService newsService=new NewsService(LastNewsActivity.this);
// Start Connect RecyclerView to Adapter
newsService.getPosts(new INewsService() {
@Override
public void OnRecivedNewsPost(List<Post> posts) {
RecyclerView recyclerView=(RecyclerView)findViewById(R.id.reycler_view);
NewsAdapter newsAdapter=new NewsAdapter(LastNewsActivity.this,posts);
recyclerView.setLayoutManager(new LinearLayoutManager(LastNewsActivity.this,LinearLayoutManager.VERTICAL,false));
recyclerView.setAdapter(newsAdapter);
// End Connect RecyclerView to Adapter
}
});
}
职位类别:
public class Post {
private int id;
private String Image;
private String Title;
private String Content;
private String Date;
public String getImage() {
return Image;
}
public void setImage(String image) {
Image = image;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getTitle() {
return Title;
}
public void setTitle(String title) {
Title = title;
}
public String getContent() {
return Content;
}
public void setContent(String content) {
Content = content;
}
public String getDate() {
return Date;
}
public void setDate(String date) {
Date = date;
}
}
INewsInterface:
public interface INewsService {
void OnRecivedNewsPost(List<Post> posts);
}
新闻服务:
public class NewsService {
private Context context;
public NewsService(Context context){
this.context = context;
}
public void getPosts(final INewsService iNewsService){
JsonArrayRequest jsonArrayRequest=new JsonArrayRequest(Request.Method.GET, "http://myip:8080/Test/getposts.php", null, new Response.Listener<JSONArray>() {
@Override
public void onResponse(JSONArray response) {
List<Post> posts=new ArrayList<>();
for (int i = 0; i < response.length(); i++) {
Post post=new Post();
try {
JSONObject object=response.getJSONObject(i);
post.setId(object.getInt("id"));
post.setTitle(object.getString("title"));
post.setImage(object.getString("image_url"));
post.setContent(object.getString("content"));
post.setDate(object.getString("date"));
posts.add(post);
} catch (JSONException e) {
e.printStackTrace();
}
iNewsService.OnRecivedNewsPost(posts);
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
}
});
jsonArrayRequest.setRetryPolicy(new DefaultRetryPolicy(18000,DefaultRetryPolicy.DEFAULT_MAX_RETRIES,DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
Volley.newRequestQueue(context).add(jsonArrayRequest);
}
}
适配器:
public class NewsAdapter extends RecyclerView.Adapter<NewsAdapter.NewsViewHolder> {
private Context context;
private List<Post> posts;
public NewsAdapter(Context context, List<Post> posts){
this.context = context;
this.posts = posts;
}
@Override
public NewsViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
return new NewsViewHolder(LayoutInflater.from(context).inflate(R.layout.layout_news,parent,false));
}
@Override
public void onBindViewHolder(NewsViewHolder holder, int position) {
Post post=posts.get(position);
Picasso.with(context).load(post.getImage()).into(holder.Image);
holder.Title.setText(post.getTitle());
holder.Content.setText(post.getContent());
holder.Date.setText(post.getDate());
}
@Override
public int getItemCount() {
return posts.size();
}
public class NewsViewHolder extends RecyclerView.ViewHolder{
private ImageView Image;
private TextView Title;
private TextView Content;
private TextView Date;
public NewsViewHolder(View itemView) {
super(itemView);
Image=(ImageView)itemView.findViewById(R.id.item_image);
Title=(TextView)itemView.findViewById(R.id.item_title);
Content=(TextView)itemView.findViewById(R.id.item_content);
Date=(TextView)itemView.findViewById(R.id.item_date);
}
}
问题是什么?我该如何解决这个问题?
更新
当我使用此代码在我的项目中添加manuel数据时它的工作但是当我使用服务器时它会向我显示此错误:
public class PostFakeGenerator {
public static List<Post> getData(Context context) {
List<Post> posts=new ArrayList<>();
for (int i = 0; i < 6; i++) {
Post post=new Post();
post.setId(i);
post.setTitle("لزوم ایپسوم متن ساختگی");
post.setContent("به نام خدا . کیانوش درتاج هستم . دارم برنامه اندروید میسازم . امیدوارم در این کار مانند طراحی وب سایت موفق باشم . به نام خدا . کیانوش درتاج هستم . دارم برنامه اندروید میسازم . امیدوارم در این کار مانند طراحی وب سایت موفق باشم");
post.setDate(""+i+" ساعت پیش" );
switch (i){
case 0:
post.setImage(ResourcesCompat.getDrawable(context.getResources(), R.drawable.pic1,null));
break;
case 1:
post.setImage(ResourcesCompat.getDrawable(context.getResources(), R.drawable.pic2,null));
break;
case 2:
post.setImage(ResourcesCompat.getDrawable(context.getResources(), R.drawable.pic3,null));
break;
case 3:
post.setImage(ResourcesCompat.getDrawable(context.getResources(), R.drawable.pic4,null));
break;
case 4:
post.setImage(ResourcesCompat.getDrawable(context.getResources(), R.drawable.pic5,null));
break;
case 5:
post.setImage(ResourcesCompat.getDrawable(context.getResources(), R.drawable.pic6,null));
break;
}
posts.add(post);
}
return posts;
}
*/
}