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; }