점진적 과부하 개발 블로그

Android 14주차 본문

Android

Android 14주차

지용빡 2022. 6. 13. 15:28
반응형

ListAdaptaer

 

package com.induk;

import androidx.appcompat.app.AppCompatActivity;

import android.app.ListActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.ListView;

public class MainActivity extends ListActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //setContentView(R.layout.activity_main);

        String[] values =  {
                "Apple",
                "Apple",
                "Apple",
                "Apple",
                "Apple",
                "Apple",
                "Apple",
                "Apple",
                "Apple",
                "Apple"
        };

        ArrayAdapter<String> adapter = new ArrayAdapter<String>(
            this, android.R.layout.simple_list_item_1, values
            // simple_list_item_checked // CheckBox
        );

        setListAdapter(adapter);

    }

    @Override
    protected void onListItemClick(ListView l, View v, int position, long id) {

    }
}
    @Override
    protected void onListItemClick(ListView l, View v, int position, long id) {
        String item = (String) getListAdapter().getItem(position);
        Toast.makeText(this, item + "selecetd", Toast.LENGTH_SHORT).show();
    }

ss

package com.induk;

import androidx.appcompat.app.AppCompatActivity;

import android.app.ListActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;

import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers;
import io.reactivex.rxjava3.core.Observable;
import io.reactivex.rxjava3.disposables.Disposable;
import io.reactivex.rxjava3.functions.Consumer;
import io.reactivex.rxjava3.schedulers.Schedulers;

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();
    }

}

ss

package com.induk;

import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;

import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;

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;

    }
        }

gradle

plugins {
    id 'com.android.application'
}

android {
    compileSdk 32

    defaultConfig {
        applicationId "com.induk"
        minSdk 23
        targetSdk 32
        versionCode 1
        versionName "1.0"

        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
}

configurations.all {
    resolutionStrategy.dependencySubstitution {
        substitute module('org.hamcrest:hamcrest-core:1.1') with module('junit:junit:4.10')
    }
}


dependencies {

    implementation 'androidx.appcompat:appcompat:1.4.1'
    implementation 'com.google.android.material:material:1.6.0'
    implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
    testImplementation 'junit:junit:4.+'
    androidTestImplementation 'androidx.test.ext:junit:1.1.3'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'

    // https://mvnrepository.com/artifact/io.reactivex.rxjava3/rxjava
    implementation group: 'io.reactivex.rxjava3', name: 'rxjava', version: '3.1.4'
    // https://mvnrepository.com/artifact/io.reactivex.rxjava3/rxandroid
    implementation group: 'io.reactivex.rxjava3', name: 'rxandroid', version: '3.0.0'
    // 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'


}
반응형

'Android' 카테고리의 다른 글

Android RxJava  (0) 2022.05.23
Android 테이블 레이아웃/ 상대적 레이아웃  (0) 2022.04.18
Android 가중치(weight)  (0) 2022.04.17
Android에서 이미지뷰 사용  (0) 2022.04.16
Android 사용자 인터페이스 기초  (0) 2022.04.15