如何显示JSON数据列表视图中与Retrofit2
问题描述:
我是一个关于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
感谢侑帮助:)
答
它`简单,首先你要在你的布局中添加一个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);
答
取课程名单
List<Course> courseList = catalog.courses;
然后进行自定义列表适配器和从该列表中拿到冠军,并显示在列表中的TextView
textView.setText(courseList.get(position).title);
感谢您的帮助!但我得到'this.courses.add(c.title)'行的错误;''courses'无法解析符号'课程' –
您必须在您的活动中声明ListView变量,您可以更改它的名称。 –
对不起还是错误 –