Android 回收视图为空

Android 回收视图为空,android,android-recyclerview,Android,Android Recyclerview,回收视图为空 这是我第一次使用recycleview进行改装。启动listactivity.java时,将显示空的recycleview。recycleview中未显示保存在本地主机中的项目。有人能帮我吗 MainActivity.class package com.example.kiran.fruitveg; import android.content.Intent; import android.support.v7.app.AppCompatActivity; import andr

回收视图为空

这是我第一次使用recycleview进行改装。启动listactivity.java时,将显示空的recycleview。recycleview中未显示保存在本地主机中的项目。有人能帮我吗

MainActivity.class

package com.example.kiran.fruitveg;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;

import java.util.List;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    public void getFruit(View view) {
        Intent intent = new Intent(this,ListActivity.class);
        intent.putExtra("type","fruit");
        startActivity(intent);
    }

    public void getVegetable(View view) {
        Intent intent = new Intent(this,ListActivity.class);
        intent.putExtra("type","vegetable");
        startActivity(intent);
    }
}
package com.example.kiran.fruitveg;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;

import java.util.ArrayList;
import java.util.List;

import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;

public class ListActivity extends AppCompatActivity {

    private RecyclerView recyclerView;
    private RecyclerView.LayoutManager layoutManager;
    private List<Calories> calories;
    private RecyclerAdapter adapter;
    private ApiInterface apiInterface;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_list);

        calories = new ArrayList<>();
        recyclerView = (RecyclerView) findViewById(R.id.recyclerview);
        layoutManager = new LinearLayoutManager(this);
        recyclerView.setLayoutManager(layoutManager);
        recyclerView.setHasFixedSize(true);
        adapter = new RecyclerAdapter(calories,ListActivity.this);
        recyclerView.setAdapter(adapter);

        if(getIntent().getExtras()!=null)
        {
            String type = getIntent().getExtras().getString("type");
        }

    }
    public void fetchInformation(String type)
    {
        apiInterface = ApiClient.getApiClient().create(ApiInterface.class);
        Call<List<Calories>> call = apiInterface.getCaloriesInfo(type);
        call.enqueue(new Callback<List<Calories>>() {
            @Override
            public void onResponse(Call<List<Calories>> call, Response<List<Calories>> response) {
                calories = response.body();
                adapter = new RecyclerAdapter(calories,ListActivity.this);
                recyclerView.setAdapter(adapter);
            }

            @Override
            public void onFailure(Call<List<Calories>> call, Throwable t) {

            }
        });
    }
}
ListActivity.class

package com.example.kiran.fruitveg;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;

import java.util.List;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    public void getFruit(View view) {
        Intent intent = new Intent(this,ListActivity.class);
        intent.putExtra("type","fruit");
        startActivity(intent);
    }

    public void getVegetable(View view) {
        Intent intent = new Intent(this,ListActivity.class);
        intent.putExtra("type","vegetable");
        startActivity(intent);
    }
}
package com.example.kiran.fruitveg;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;

import java.util.ArrayList;
import java.util.List;

import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;

public class ListActivity extends AppCompatActivity {

    private RecyclerView recyclerView;
    private RecyclerView.LayoutManager layoutManager;
    private List<Calories> calories;
    private RecyclerAdapter adapter;
    private ApiInterface apiInterface;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_list);

        calories = new ArrayList<>();
        recyclerView = (RecyclerView) findViewById(R.id.recyclerview);
        layoutManager = new LinearLayoutManager(this);
        recyclerView.setLayoutManager(layoutManager);
        recyclerView.setHasFixedSize(true);
        adapter = new RecyclerAdapter(calories,ListActivity.this);
        recyclerView.setAdapter(adapter);

        if(getIntent().getExtras()!=null)
        {
            String type = getIntent().getExtras().getString("type");
        }

    }
    public void fetchInformation(String type)
    {
        apiInterface = ApiClient.getApiClient().create(ApiInterface.class);
        Call<List<Calories>> call = apiInterface.getCaloriesInfo(type);
        call.enqueue(new Callback<List<Calories>>() {
            @Override
            public void onResponse(Call<List<Calories>> call, Response<List<Calories>> response) {
                calories = response.body();
                adapter = new RecyclerAdapter(calories,ListActivity.this);
                recyclerView.setAdapter(adapter);
            }

            @Override
            public void onFailure(Call<List<Calories>> call, Throwable t) {

            }
        });
    }
}
RecyclerAdapter.java

package com.example.kiran.fruitveg;

import com.google.gson.annotations.SerializedName;

/**
 * Created by kiran on 9/21/2017.
 */
public class Calories {

    @SerializedName("name")
    private String Name;

    @SerializedName("image_path")
    private String Image_path;

    @SerializedName("calories")
    private int Calories;

    public String getName() {
        return Name;
    }

    public String getImage_path() {
        return Image_path;
    }

    public int getCalories() {
        return Calories;
    }
}
package com.example.kiran.fruitveg;

import android.content.Context;
import android.content.Intent;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;

import com.bumptech.glide.Glide;

import java.util.List;

import retrofit2.Call;

/**
 * Created by kiran on 9/21/2017.
 */
public class RecyclerAdapter extends RecyclerView.Adapter<RecyclerAdapter.MyViewHolder> {

    private List<Calories> calories;
    private Context context;

    public RecyclerAdapter(List<Calories> calories,Context context)
    {
        this.calories = calories;
        this.context = context;
    }

    @Override
    public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.raw_layout,parent,false);
        return new MyViewHolder(view);
    }

    @Override
    public void onBindViewHolder(MyViewHolder holder, int position) {
        holder.Name.setText(calories.get(position).getName());
        holder.Calories.setText("Calories:"+ Integer.toString(calories.get(position).getCalories()));
        Glide.with(context).load(calories.get(position).getImage_path()).into(holder.img);
    }

    @Override
    public int getItemCount() {
        return calories.size();
    }

    public static class MyViewHolder extends RecyclerView.ViewHolder
    {
        ImageView img;
        TextView Name,Calories;

        public MyViewHolder(View itemView) {
            super(itemView);
            img = (ImageView)itemView.findViewById(R.id.img);
            Name = (TextView)itemView.findViewById(R.id.name);
            Calories = (TextView)itemView.findViewById(R.id.calories);
        }
    }
}
package com.example.kiran.fruitveg;
import retrofit2.Retrofit;
import retrofit2.converter.gson.GsonConverterFactory;

/**
 * Created by kiran on 9/20/2017.
 */
public class ApiClient {

    public static final String BASE_URL = "http://10.0.3.2/caloriesapp/";

    public static Retrofit retrofit = null;

    public static Retrofit getApiClient()
    {
        if(retrofit==null)
        {
            retrofit = new Retrofit.Builder().baseUrl(BASE_URL)
                    .addConverterFactory(GsonConverterFactory.create()).build();
        }
        return retrofit;
    }
}
    package com.example.kiran.fruitveg;

import java.util.List;

import retrofit2.Call;
import retrofit2.http.GET;
import retrofit2.http.POST;
import retrofit2.http.Query;

/**
 * Created by kiran on 9/20/2017.
 */
public interface ApiInterface {


    @GET("getcalories.php")
    Call<List<Calories>> getCaloriesInfo(@Query("item_type") String item_type);
}
apinterface.java

package com.example.kiran.fruitveg;

import com.google.gson.annotations.SerializedName;

/**
 * Created by kiran on 9/21/2017.
 */
public class Calories {

    @SerializedName("name")
    private String Name;

    @SerializedName("image_path")
    private String Image_path;

    @SerializedName("calories")
    private int Calories;

    public String getName() {
        return Name;
    }

    public String getImage_path() {
        return Image_path;
    }

    public int getCalories() {
        return Calories;
    }
}
package com.example.kiran.fruitveg;

import android.content.Context;
import android.content.Intent;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;

import com.bumptech.glide.Glide;

import java.util.List;

import retrofit2.Call;

/**
 * Created by kiran on 9/21/2017.
 */
public class RecyclerAdapter extends RecyclerView.Adapter<RecyclerAdapter.MyViewHolder> {

    private List<Calories> calories;
    private Context context;

    public RecyclerAdapter(List<Calories> calories,Context context)
    {
        this.calories = calories;
        this.context = context;
    }

    @Override
    public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.raw_layout,parent,false);
        return new MyViewHolder(view);
    }

    @Override
    public void onBindViewHolder(MyViewHolder holder, int position) {
        holder.Name.setText(calories.get(position).getName());
        holder.Calories.setText("Calories:"+ Integer.toString(calories.get(position).getCalories()));
        Glide.with(context).load(calories.get(position).getImage_path()).into(holder.img);
    }

    @Override
    public int getItemCount() {
        return calories.size();
    }

    public static class MyViewHolder extends RecyclerView.ViewHolder
    {
        ImageView img;
        TextView Name,Calories;

        public MyViewHolder(View itemView) {
            super(itemView);
            img = (ImageView)itemView.findViewById(R.id.img);
            Name = (TextView)itemView.findViewById(R.id.name);
            Calories = (TextView)itemView.findViewById(R.id.calories);
        }
    }
}
package com.example.kiran.fruitveg;
import retrofit2.Retrofit;
import retrofit2.converter.gson.GsonConverterFactory;

/**
 * Created by kiran on 9/20/2017.
 */
public class ApiClient {

    public static final String BASE_URL = "http://10.0.3.2/caloriesapp/";

    public static Retrofit retrofit = null;

    public static Retrofit getApiClient()
    {
        if(retrofit==null)
        {
            retrofit = new Retrofit.Builder().baseUrl(BASE_URL)
                    .addConverterFactory(GsonConverterFactory.create()).build();
        }
        return retrofit;
    }
}
    package com.example.kiran.fruitveg;

import java.util.List;

import retrofit2.Call;
import retrofit2.http.GET;
import retrofit2.http.POST;
import retrofit2.http.Query;

/**
 * Created by kiran on 9/20/2017.
 */
public interface ApiInterface {


    @GET("getcalories.php")
    Call<List<Calories>> getCaloriesInfo(@Query("item_type") String item_type);
}
package com.example.kiran.fruitveg;
导入java.util.List;
2.电话;;
导入文件2.http.GET;
导入文件2.http.POST;
导入2.http.Query;
/**
*由kiran于2017年9月20日创建。
*/
公共接口{
@获取(“getcarries.php”)
调用getCaloriesInfo(@Query(“item_-type”)字符串item_-type);
}

只要在if循环中调用fetchInformation(字符串类型)

if(getIntent().getExtras()!=null)
    {
        String type = getIntent().getExtras().getString("type");
        fetchInformation(type)
    }

}
public void fetchInformation(String type)
{
    apiInterface = ApiClient.getApiClient().create(ApiInterface.class);
    Call<List<Calories>> call = apiInterface.getCaloriesInfo(type);
    call.enqueue(new Callback<List<Calories>>() {
        @Override
        public void onResponse(Call<List<Calories>> call, Response<List<Calories>> response) {
            calories = response.body();
            adapter = new RecyclerAdapter(calories,ListActivity.this);
            recyclerView.setAdapter(adapter);
        }

        @Override
        public void onFailure(Call<List<Calories>> call, Throwable t) {

        }
    });
}
if(getIntent().getExtras()!=null)
{
字符串类型=getIntent().getExtras().getString(“类型”);
获取信息(类型)
}
}
公共信息(字符串类型)
{
apiInterface=ApiClient.getApiClient().create(apiInterface.class);
Call Call=apinterface.getCarriosInfo(类型);
call.enqueue(新回调(){
@凌驾
公共void onResponse(调用、响应){
卡路里=反应。身体();
adapter=新的回收器适配器(卡路里、ListActivity.this);
recyclerView.setAdapter(适配器);
}
@凌驾
失败时公共无效(调用调用,可丢弃的t){
}
});
}

只要在if循环中调用fetchInformation(字符串类型)

if(getIntent().getExtras()!=null)
    {
        String type = getIntent().getExtras().getString("type");
        fetchInformation(type)
    }

}
public void fetchInformation(String type)
{
    apiInterface = ApiClient.getApiClient().create(ApiInterface.class);
    Call<List<Calories>> call = apiInterface.getCaloriesInfo(type);
    call.enqueue(new Callback<List<Calories>>() {
        @Override
        public void onResponse(Call<List<Calories>> call, Response<List<Calories>> response) {
            calories = response.body();
            adapter = new RecyclerAdapter(calories,ListActivity.this);
            recyclerView.setAdapter(adapter);
        }

        @Override
        public void onFailure(Call<List<Calories>> call, Throwable t) {

        }
    });
}
if(getIntent().getExtras()!=null)
{
字符串类型=getIntent().getExtras().getString(“类型”);
获取信息(类型)
}
}
公共信息(字符串类型)
{
apiInterface=ApiClient.getApiClient().create(apiInterface.class);
Call Call=apinterface.getCarriosInfo(类型);
call.enqueue(新回调(){
@凌驾
公共void onResponse(调用、响应){
卡路里=反应。身体();
adapter=新的回收器适配器(卡路里、ListActivity.this);
recyclerView.setAdapter(适配器);
}
@凌驾
失败时公共无效(调用调用,可丢弃的t){
}
});
}

您在哪里调用fetchInformation(字符串类型)您检查过您的改装请求是否被调用了吗?当我在onResponse和onFailure方法中使用toast时,会调用onFailure。您在哪里调用fetchInformation(字符串类型)你检查过你的改装请求是否被调用了吗?当我在onResponse和onFailure方法中使用toast时调用onFailure当我在onResponse和onFailure方法中使用toast时调用onFailure问题已经解决谢谢大家的帮助当我在onResponse和onFailure方法中使用toast时调用onFailure这个问题已经解决了,谢谢大家的帮助