不从服务器返回列表(xamp)

时间:2017-05-17 08:09:22

标签: android android-layout android-recyclerview recycler-adapter

我需要从具有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;
}
*/

}

0 个答案:

没有答案