Java 改装响应成功,但结果为空

Java 改装响应成功,但结果为空,java,android,gson,retrofit,Java,Android,Gson,Retrofit,接口: public interface BabService { @GET("bab.php") Call<Respon> tampil(@Query("imam") String imam); } 适配器: public class BabAdapter extends RecyclerView.Adapter<BabAdapter.ViewHolder> { private Context context; private

接口:

public interface BabService {

    @GET("bab.php")
    Call<Respon> tampil(@Query("imam") String imam);
}
适配器:

public class BabAdapter extends RecyclerView.Adapter<BabAdapter.ViewHolder> 

{

    private Context context;
    private List<BabResult> results;
    private String idBab, judulBab;
    private int no;

    public BabAdapter(Context context, List<BabResult> results) {
        this.context = context;
        this.results = results;
    }

    @Override
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_bab, parent, false);
        ViewHolder holder = new ViewHolder(v);

        return holder;
    }

    @Override
    public void onBindViewHolder(ViewHolder holder, int position) {
        if(position % 2 != 0){
            holder.vBab.setBackgroundResource(R.color.ijo);
        }else{
            holder.vBab.setBackgroundResource(R.color.oren);
        }

        no = position + 1;
        BabResult result = results.get(position);
        idBab = result.getId_bab();
        judulBab = result.getBab();
        holder.tvNo.setText(no);
        holder.tvBab.setText(judulBab);
    }

    @Override
    public int getItemCount() {
        if(results == null){
            return 4;
        }
        return results.size();
    }

    public class ViewHolder extends RecyclerView.ViewHolder {

        private View vBab;
        private TextView tvBab, tvNo;

        public ViewHolder(View itemView) {
            super(itemView);
            vBab = (View) itemView.findViewById(R.id.v_bab);
            tvNo = (TextView) itemView.findViewById(R.id.tv_no);
            tvBab = (TextView) itemView.findViewById(R.id.tv_bab);
            itemView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    Intent i = new Intent(context, HadisList.class);
                    i.putExtra("id", idBab);
                    i.putExtra("bab", judulBab);
                    i.putExtra("no", no);
                    context.startActivity(i);
                }
            });
        }
    }
}
使用链接

Respon类

public class Respon 
{
private ArrayList<Result> result;

private String value;

public  ArrayList<Result> getResult ()
{
    return result;
}

public void setResult ( ArrayList<Result> result)
{
    this.result = result;
}

public String getValue ()
{
    return value;
}

public void setValue (String value)
{
    this.value = value;
}

@Override
public String toString()
{
    return "ClassPojo [result = "+result+", value = "+value+"]";
}

public class Result
{
private String id_kitab;

private String bab;

private String id_bab;

public String getId_kitab ()
{
    return id_kitab;
}

public void setId_kitab (String id_kitab)
{
    this.id_kitab = id_kitab;
}

public String getBab ()
{
    return bab;
}

public void setBab (String bab)
{
    this.bab = bab;
}

public String getId_bab ()
{
    return id_bab;
}

public void setId_bab (String id_bab)
{
    this.id_bab = id_bab;
}

@Override
public String toString()
{
    return "ClassPojo [id_kitab = "+id_kitab+", bab = "+bab+", id_bab = 
"+id_bab+"]";
}
}
}
公共类响应
{
私有数组列表结果;
私有字符串值;
公共ArrayList getResult()
{
返回结果;
}
公共void setResult(ArrayList结果)
{
this.result=结果;
}
公共字符串getValue()
{
返回值;
}
公共void设置值(字符串值)
{
这个值=值;
}
@凌驾
公共字符串toString()
{
返回“ClassPojo[result=“+result+”,value=“+value+”]”;
}
公开课成绩
{
私有字符串id_kitab;
私有字符串bab;
私有字符串id_bab;
公共字符串getId_kitab()
{
返回id_kitab;
}
公共无效集合id_kitab(字符串id_kitab)
{
this.id_kitab=id_kitab;
}
公共字符串getBab()
{
返回bab;
}
公共无效收进选项卡(字符串bab)
{
this.bab=bab;
}
公共字符串getId_bab()
{
返回id_bab;
}
public void setId_bab(字符串id_bab)
{
this.id_bab=id_bab;
}
@凌驾
公共字符串toString()
{
返回“ClassPojo[id_kitab=“+id_kitab+”,bab=“+bab+”,id_bab=
“+id_bab+”];
}
}
}
通过这种方式检查数据是否为空,并添加arraylist

private void loadDataBab() {
Retrofit retrofit = new Retrofit
        .Builder()
        .baseUrl(URL)
        .addConverterFactory(GsonConverterFactory.create())
        .build();
BabService api = retrofit.create(BabService.class);
Call<Respon> call = api.tampil(imam);
call.enqueue(new Callback<Respon>() {
    @Override
    public void onResponse(Call<Respon> call, Response<Respon> response) {
       if (response.isSuccessful())
       if (response.body() != null)
        pbLoading.setVisibility(View.GONE);
        if (response.body().getValue().equalsIgnoreCase("1")) {
            results.addAll(response.body().getResult());
            babAdapter = new BabAdapter(MenuBab.this, results);
            rvBab.setAdapter(babAdapter);
        }
    }

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

    }
    });
    }
private void loaddatabase(){
改装=新改装
.Builder()
.baseUrl(URL)
.addConverterFactory(GsonConverterFactory.create())
.build();
BabService api=改装.create(BabService.class);
Call Call=api.tampil(imam);
call.enqueue(新回调(){
@凌驾
公共void onResponse(调用、响应){
if(response.issusccessful())
if(response.body()!=null)
pbLoading.setVisibility(View.GONE);
if(response.body().getValue().equalsIgnoreCase(“1”)){
results.addAll(response.body().getResult());
babAdapter=新的babAdapter(MenuBab.this,results);
rvBab.设置适配器(BAB适配器);
}
}
@凌驾
失败时公共无效(调用调用,可丢弃的t){
}
});
}

您需要以这种方式使用模型类 现在您可以得到API结果了

响应模型类

import com.google.gson.annotations.SerializedName;
import java.io.Serializable;
import java.util.ArrayList;

public class Response implements Serializable{

    @SerializedName("value")
    private String value;

    @SerializedName("result")
    private ArrayList<BabResult> resultBab;

    public String getValue() {
        return value;
    }

    public ArrayList<BabResult> getResultBab() {
        return resultBab;
    }

    public void setValue(String value) {
        this.value = value;
    }

    public void setResultBab(ArrayList<BabResult> resultBab) {
        this.resultBab = resultBab;
    }

    public class BabResult {

        @SerializedName("id_bab")
        private String id_bab;

        @SerializedName("id_kitab")
        private String id_kitab;

        @SerializedName("bab")
        private String bab;

        public String getId_bab() {
            return id_bab;
        }
        public void setId_bab(String id_bab) {
            this.id_bab = id_bab;
        }


        public String getId_kitab() {
            return id_kitab;
        }
        public void setId_kitab(String id_kitab) {
            this.id_kitab = id_kitab;
        }


        public String getBab() {
            return bab;
        }
        public void setBab(String bab) {
            this.bab = bab;
        }
    }
}
import com.google.gson.annotations.SerializedName;
导入java.io.Serializable;
导入java.util.ArrayList;
公共类响应实现可序列化{
@序列化名称(“值”)
私有字符串值;
@SerializedName(“结果”)
私有arraylistresultbab;
公共字符串getValue(){
返回值;
}
公共数组列表getResultBab(){
返回结果选项卡;
}
公共void设置值(字符串值){
这个值=值;
}
public void setResultBab(ArrayList resultBab){
this.resultBab=resultBab;
}
公共类结果{
@序列化名称(“id_bab”)
私有字符串id_bab;
@序列化名称(“id_kitab”)
私有字符串id_kitab;
@序列化名称(“bab”)
私有字符串bab;
公共字符串getId_bab(){
返回id_bab;
}
public void setId_bab(字符串id_bab){
this.id_bab=id_bab;
}
公共字符串getId_kitab(){
返回id_kitab;
}
公共无效集合id_kitab(字符串id_kitab){
this.id_kitab=id_kitab;
}
公共字符串getBab(){
返回bab;
}
公共无效收进选项卡(字符串bab){
this.bab=bab;
}
}
}

像这样在Respon类中传递数组

public class Respon {
    private String value;
    private BabResult [] result;

    public String getValue() {
        return value;
    }

    public BabResult [] getResultBab() { return result; }
}
在您的
loaddatabase
方法中

 private List<BabResult> results = new ArrayList<>();



    private void loadDataBab() {
Retrofit retrofit = new Retrofit
        .Builder()
        .baseUrl(URL)
        .addConverterFactory(GsonConverterFactory.create())
        .build();
RequestInterface api = retrofit.create(RequestInterface.class);
Call<Respon> call = api.tampil("1");
call.enqueue(new Callback<Respon>() {
    @Override
    public void onResponse(Call<Respon> call, Response<Respon> response) {
        String value = response.body().getValue();
        if (value.equals("1")) {

            results = new ArrayList<>(Arrays.asList(response.body().getResultBab()));

        }
    }

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

    }
});
private List results=new ArrayList();
私有void loadDataBab(){
改装=新改装
.Builder()
.baseUrl(URL)
.addConverterFactory(GsonConverterFactory.create())
.build();
RequestInterface api=reformation.create(RequestInterface.class);
Call Call=api.tampil(“1”);
call.enqueue(新回调(){
@凌驾
公共void onResponse(调用、响应){
字符串值=response.body().getValue();
如果(值等于(“1”)){
结果=新的ArrayList(Arrays.asList(response.body().getResultBab());
}
}
@凌驾
失败时公共无效(调用调用,可丢弃的t){
}
});
}我将响应更改为:

public class Respon {

private String value;
private List<BabResult> result;

public String getValue() { return value; }

public List<BabResult> getResult() { return result; }
公共类响应{
私有字符串值;
私有列表结果;
公共字符串getValue(){return value;}
public List getResult(){return result;}
}


它是有效的。Thx:)

请尝试我的更新代码,它对我有效。。。
import com.google.gson.annotations.SerializedName;
import java.io.Serializable;
import java.util.ArrayList;

public class Response implements Serializable{

    @SerializedName("value")
    private String value;

    @SerializedName("result")
    private ArrayList<BabResult> resultBab;

    public String getValue() {
        return value;
    }

    public ArrayList<BabResult> getResultBab() {
        return resultBab;
    }

    public void setValue(String value) {
        this.value = value;
    }

    public void setResultBab(ArrayList<BabResult> resultBab) {
        this.resultBab = resultBab;
    }

    public class BabResult {

        @SerializedName("id_bab")
        private String id_bab;

        @SerializedName("id_kitab")
        private String id_kitab;

        @SerializedName("bab")
        private String bab;

        public String getId_bab() {
            return id_bab;
        }
        public void setId_bab(String id_bab) {
            this.id_bab = id_bab;
        }


        public String getId_kitab() {
            return id_kitab;
        }
        public void setId_kitab(String id_kitab) {
            this.id_kitab = id_kitab;
        }


        public String getBab() {
            return bab;
        }
        public void setBab(String bab) {
            this.bab = bab;
        }
    }
}
public class Respon {
    private String value;
    private BabResult [] result;

    public String getValue() {
        return value;
    }

    public BabResult [] getResultBab() { return result; }
}
 private List<BabResult> results = new ArrayList<>();



    private void loadDataBab() {
Retrofit retrofit = new Retrofit
        .Builder()
        .baseUrl(URL)
        .addConverterFactory(GsonConverterFactory.create())
        .build();
RequestInterface api = retrofit.create(RequestInterface.class);
Call<Respon> call = api.tampil("1");
call.enqueue(new Callback<Respon>() {
    @Override
    public void onResponse(Call<Respon> call, Response<Respon> response) {
        String value = response.body().getValue();
        if (value.equals("1")) {

            results = new ArrayList<>(Arrays.asList(response.body().getResultBab()));

        }
    }

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

    }
});
public class Respon {

private String value;
private List<BabResult> result;

public String getValue() { return value; }

public List<BabResult> getResult() { return result; }