繁体   English   中英

ArrayAdapter和改造2.0

[英]ArrayAdapter and retrofit 2.0

如何使此适配器与改造2.0一起使用? 我的意思是在MainActivity

MainActivity.java

public class MainActivity extends AppCompatActivity {

private ListView listView;


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

    listView = (ListView) findViewById(R.id.listView);





    Retrofit retrofit = new Retrofit.Builder().baseUrl("http://10.0.2.2/alruthea").build();

    final TelService service = retrofit.create(TelService.class);
    service.getphones(new Callback<List<tel_list>>() {
                          @Override
                          public void onResponse(Response<List<tel_list>> response, Retrofit retrofit) {

                          ArrayAdapter adapter = new ArrayAdapter(MainActivity.this, Telephones);
                              listView.setAdapter(adapter);




                          }

                          @Override
                          public void onFailure(Throwable t) {

                          }
                      }


    );
}


}

TelService.java

    public interface TelService {
    @GET("/getphones.php")

    retrofit.Call<List<tel_list>> getphones();
}

tel_list.java

public class tel_list{

    private String name;
    private String number;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getNumber() {
        return number;
    }

    public void setNumber(String number) {
        this.number = number;
    }
}

TelAdapter.java

public class TelAdapter extends ArrayAdapter<tel_list>{

Context context;


public TelAdapter(Context context, int resource, ArrayList<tel_list> users){
    super(context, resource, users);

    this.context = context;
}



@Override
public View getView(int position, View cell, ViewGroup parent){

    Holder holder;

    if (cell == null) {
        holder = new Holder();

        LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

        cell = inflater.inflate(R.layout.list_item, null);

        holder.textview = (TextView) cell.findViewById(R.id.names);
        holder.textview1 = (TextView) cell.findViewById(R.id.numbers);
        cell.setTag(holder);
    }else {
        holder = (Holder)cell.getTag();

    }
    tel_list user = getItem(position);

    holder.textview.setText(user.getName());
    holder.textview1.setText(user.getNumber());

    return cell;
}

private class Holder{

    TextView textview;
    TextView textview1;
}


}

关于TelAdapter.class,我该写私有类Holder还是静态类Holder?

您是否尝试过:

@Override
  public void onResponse(Response<List<tel_list>> response, Retrofit retrofit) {
    if (!response.isSuccess()) {
        //TODO 
        return;
    }
     List<tel_list> date = response.body();


      ArrayAdapter adapter = new ArrayAdapter(MainActivity.this, date);
          listView.setAdapter(adapter);

}

Patrick提供的解决方案是正确的。 只是您需要1个更多的ArrayAdapter资源参数。 这应该工作。

@Override
  public void onResponse(Response<List<tel_list>> response, Retrofit retrofit) {
    if (!response.isSuccess()) {
        //TODO 
        return;
    }
     List<tel_list> date = response.body();


      ArrayAdapter adapter = new ArrayAdapter(MainActivity.this, android.R.layout.simple_list_item_1, date);
          listView.setAdapter(adapter);

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM