처음부터 차근차근
고급 위젯과 프래그먼트 본문
반응형
어댑터 뷰
어댑터 뷰(AdapterView)는 배열이나 파일, 데이터베이스에 저장된 데이터를 화면에 표시할 때 유용한 뷰
어댑터 뷰의 종류
리스트 뷰(ListView), 갤러리(Gallery), 스피너(Spinner), 그리드 뷰(GridView)
리스트 뷰(ListView)
리스트 뷰(ListView)는 항목들을 수직으로 보여주는 어댑터 뷰로서 상하로 스크롤이 가능
리스트 뷰의 표준 레이아웃
예제
public class MainActivity extends ListActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
String[] values = {
"Apple",
"Apple",
"Apple",
"Apple",
"Apple",
"Apple",
"Apple",
"Apple"
};
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, values);
setListAdapter(adapter);
}
@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
String item = (String) getListAdapter().getItem(position);
Toast.makeText(this, item + " selected", Toast.LENGTH_SHORT).show();
}
}
RESTful API
https://jsonformatter.curiousconcept.com/
json 검증하는 사이트
swagger
예제
AndroidManifest.xml 추가
<uses-permission android:name="android.permission.INTERNET" />
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:usesCleartextTraffic="true"
android:theme="@style/Theme.Ch07">
build.gradle 추가
configurations.all {
resolutionStrategy.dependencySubstitution {
substitute module('org.hamcrest:hamcrest-core:1.1') with module('junit:junit:4.10')
}
}
dependencies {
// https://mvnrepository.com/artifact/com.squareup.okhttp3/okhttp
implementation group: 'com.squareup.okhttp3', name: 'okhttp', version: '4.9.3'
// https://mvnrepository.com/artifact/com.googlecode.json-simple/json-simple
implementation group: 'com.googlecode.json-simple', name: 'json-simple', version: '1.1.1'
implementation group: 'io.reactivex.rxjava3', name: 'rxjava', version: '3.1.4'
implementation group: 'io.reactivex.rxjava3', name: 'rxandroid', version: '3.0.0'
}
MainActivity.java
public class MainActivity extends ListActivity {
Disposable backgroundTask;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//setContentView(R.layout.activity_main);
Observable<String[]> source = Observable.fromCallable(
() -> {
String[] values = new HttpHelper().getList();
// NULL value not allowed.
if (values == null) {
values = new String[] {"No data"};
}
return values;
}
);
backgroundTask = source.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread())
.subscribe(new Consumer<String[]>() {
@Override
public void accept(String[] result) {
ArrayAdapter<String> adapter = new ArrayAdapter<String>(MainActivity.this,
android.R.layout.simple_list_item_1, result);
setListAdapter(adapter);
backgroundTask.dispose();
}
});
}
@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
String item = (String) getListAdapter().getItem(position);
Toast.makeText(this, item + " selected", Toast.LENGTH_SHORT).show();
}
}
HttpHelper.java 새로 만들기(MainActivity 있는 곳에)
public class HttpHelper {
public String[] getList() {
// Declare variable(s).
String[] arrList = null;
JSONObject listObject = null;
String url = "http://115.89.165.130:6776/v1/api/getList";
try{
OkHttpClient client = new OkHttpClient();
client = new OkHttpClient.Builder().retryOnConnectionFailure(false).build();
// Request
Request request = new Request.Builder()
.url(url)
.get()
.build();
Response response = client.newCall(request).execute();
String strRet = response.body().string();
JSONParser parser = new JSONParser();
listObject = (JSONObject)parser.parse(strRet);
// error check.
if (listObject == null) {
return null;
}
JSONArray jArr = (JSONArray) listObject.get("data");
arrList = new String[jArr.size()];
for (int ii=0; ii < jArr.size(); ii++) {
JSONObject j = (JSONObject) jArr.get(ii);
arrList[ii] = (String) j.get("name");
}
} catch (Exception ex){
return null;
}
// Return.
return arrList;
}
}
실행결과
출처 : 안드로이드프로그래밍(22-1학기)김용남교수 강의 내용 변형 및 요약
반응형
'프로그래밍 > Android' 카테고리의 다른 글
Splash 화면 만들기 (0) | 2022.06.03 |
---|---|
안드로이드 그래픽 (0) | 2022.05.30 |
RxJava (0) | 2022.05.08 |
Reactive programming(수정) (1) | 2022.04.22 |
팝업 메뉴 (1) | 2022.04.19 |
Comments