2017-04-25 39 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); 
相關問題