Android 回收视图为空
回收视图为空 这是我第一次使用recycleview进行改装。启动listactivity.java时,将显示空的recycleview。recycleview中未显示保存在本地主机中的项目。有人能帮我吗 MainActivity.classAndroid 回收视图为空,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
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这个问题已经解决了,谢谢大家的帮助