처음부터 차근차근

고급 위젯과 프래그먼트 본문

프로그래밍/Android

고급 위젯과 프래그먼트

_soyoung 2022. 6. 13. 14:15
반응형

어댑터 뷰

어댑터 뷰(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://www.postman.com/

 

 

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