2017-04-25 70 views
0

我是一个关于Android编程:(如何显示JSON数据列表视图中与Retrofit2

我不知道设置列表视图的数据显示 如何在列表视图显示数据。

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 

感谢侑帮助:)

回答

3

它`简单,首先你要在你的布局中添加一个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); 
+0

感谢您的帮助!但我得到'this.courses.add(c.title)'行的错误;''courses'无法解析符号'课程' –

+0

您必须在您的活动中声明ListView变量,您可以更改它的名称。 –

+0

对不起还是错误 –

0

取课程名单

List<Course> courseList = catalog.courses; 

然后进行自定义列表适配器和从该列表中拿到冠军,并显示在列表中的TextView

textView.setText(courseList.get(position).title); 
相关问题