【问题标题】:How to show json data in Listview with Retrofit2如何使用 Retrofit2 在 Listview 中显示 json 数据
【发布时间】:2017-04-25 13:33:41
【问题描述】:

我是 Android 编程新手 :(

我不知道为显示数据设置 Listview 如何在 Listview 中显示数据。

MainActivity.java

public class MainActivity extends AppCompatActivity {


  private static final String TAG = "fong";
  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(UdacityService.BASE_URL)
              .addConverterFactory(GsonConverterFactory.create())
              .build();

    UdacityService service = retrofit.create(UdacityService.class);
    Call<UdacityCatalog> requestCatalog = service.listCatalog();

    requestCatalog.enqueue(new Callback<UdacityCatalog>() {
      @Override
      public void onResponse(Call<UdacityCatalog> call, Response<UdacityCatalog> response) {
        if (!response.isSuccessful()) {

          Log.i(TAG,"Errorr: " +response.code());
        }else{
          UdacityCatalog catalog =response.body();


          for (Course c : catalog.courses){
            Log.i(TAG,c.title);

            Log.i(TAG,"--------------");

          }
        }
      }

      @Override
      public void onFailure(Call<UdacityCatalog> call, Throwable t) {
        Log.e(TAG,"Errorr: " + t.getMessage());
      }
    });

  }
}

我想在 ListView 中显示数据c.title

Log.i(TAG,c.title)显示

I/fong: Richard Kalehoff

I/fong: Firebase Analytics: iOS

I/fong: Firebase Analytics: Android

感谢您的帮助:)

【问题讨论】:

    标签: java android json listview retrofit2


    【解决方案1】:

    很简单,首先你要在你的 Layout 中添加一个 ListView 组件:

    <ListView
            android:id="@+id/list"
            android:layout_width="match_parent"
            android:layout_height="match_parent"/>
    

    然后,在您的 JAVA 代码中找到它并将其放入实例变量中:

    ListView listview;
    
        //in your onCreate() after setContentView():
        listview = (ListView) findViewById(R.id.list);
    

    您必须创建一个包含所有标题的列表:

    List<String> courses = new ArrayList<>();
      for (Course c : catalog.courses){
              courses.add(c.title);
              }
    

    现在,您必须创建一个 SimpleAdapter 并将您的数据传递给它:

    ArrayAdapter adapter = new ArrayAdapter(MainActivity.this, android.r.layout.simple_list_item_1, courses);
    

    最后,将您的适配器添加到您的ListView

    listview.setAdapter(adapter);
    

    【讨论】:

    • 感谢您的帮助!但我在this.courses.add(c.title); courses 行中遇到错误,无法解析符号“课程”
    • 你必须在你的Activity中声明ListView变量,你可以改变它的名字。
    • 尝试删除“this”
    • @ARR.s 我改了答案,看看
    【解决方案2】:

    获取课程列表

    List<Course> courseList = catalog.courses;
    

    然后创建一个自定义列表适配器,并从该列表中获取标题并将其显示在列表的 textView 中

    textView.setText(courseList.get(position).title);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-14
      • 2017-05-13
      • 1970-01-01
      相关资源
      最近更新 更多