본문 바로가기

Android Studio59

[Android Studio] Retrofit2 이용할 때 페이징 처리 하는 방법 // 페이징 처리 recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() { @Override public void onScrolled(@NonNull RecyclerView recyclerView, int dx, int dy) { super.onScrolled(recyclerView, dx, dy); // 현재 리사이클러뷰에 보이는 마지막 요소(카드뷰)의 인덱스 int lastPosition = ((LinearLayoutManager) recyclerView.getLayoutManager()).findLastVisibleItemPosition(); // 현재 리사이클러뷰에 보이는 요소의 총 개수 int totalCount = recyc.. 2024. 1. 5.
[Android Studio] Retrofit2 라이브러리를 이용해 RecyclerView 화면 처리하기 포스트맨에서 api 요청 시 필요한 것들을 확인한다. (httpmethod, url, 토큰 유무, 데이터 유무, 쿼리스트링 유무 등등) public interface MemoApi { // 메모 생성 API @POST("/memo") Call addMemo(@Header("Authorization") String token, @Body Memo memo); // 내 메모리스트 가져오는 API @GET("/memo") Call getMemoList(@Header("Authorization") String token, @Query("offset") int offset, @Query("limit") int limit); } 확인 후, api를 호출하기 위해 api 패키지 - MemoApi 인터페이스에서 함수를.. 2024. 1. 4.
[Android Studio] 유저에게 날짜 / 시간 정보 입력받기 DatePickerDialog(), TimePickerDialog() + 받아올 때 문자열 가공 버튼을 클릭하면 DatePickerDialog 객체를 생성 후 실행하는 코드 btnDate.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { DatePickerDialog dialog = new DatePickerDialog( AddActivity.this, new DatePickerDialog.OnDateSetListener() { @Override public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) { // 월은 +1 해줘야 한다. index로 세기 때문 month += 1; // 월이나 일은 한자리면 왼쪽에 0.. 2024. 1. 4.
[Android Studio] Retrofit2 통신 시 상태 코드에 따른 코드 작성법 @Override public void onResponse(Call call, Response response) { dismissProgress(); if (response.isSuccessful()){ UserRes userRes = response.body(); SharedPreferences sp = getSharedPreferences(Config.PREFERENCE_NAME, MODE_PRIVATE); SharedPreferences.Editor editor = sp.edit(); editor.putString("token", userRes.access_token); editor.apply(); // 이상 없으므로, 메인 액티비티를 실행한다. Intent intent = new Intent(Lo.. 2024. 1. 4.
[Android Studio] 네트워크로 데이터 처리할 때 사용하는 프로그레스 다이얼로그 만들기 // 네트워크로 데이터 처리할 때 사용할 다이얼로그 Dialog dialog; private void showProgress(){ dialog = new Dialog(this); dialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT)); dialog.setContentView(new ProgressBar(this)); dialog.setCancelable(false); dialog.setCanceledOnTouchOutside(false); dialog.show(); } // 다이얼로그 사라지게 하는 함수 private void dismissProgress(){ dialog.dismiss(); } onCreate() 함수.. 2024. 1. 4.
[Android Studio] Retrofit2 라이브러리를 이용한 POST로 API 호출하기 api 패키지 안에 사용할 api 들에 맞게 인터페이스를 생성한다. 유저에 관한 api이기 때문에 UserApi 인터페이스 생성한다. public interface UserApi { // 회원가입 API @POST("/user/register") Call register(@Body User user); } httpmethod(path) Call 함수명(@Body 보낼 데이터 = 클래스 객체로) 위 형식으로 함수를 생성한다. 그러기 위해선 보낼 객체와 받을 객체가 필요하기 때문에, model 패키지에 User, UserRes 클래스를 생성한다. public class User { public String email; public String password; public String nickname; pu.. 2024. 1. 4.
[Android Studio] Retrofit2 라이브러리 사용을 위한 세팅 방법 먼저, 라이브러리를 사용하기 위해 임포트 해준다. // 네트워크 통신 라이브러리 implementation("com.squareup.retrofit2:retrofit:2.9.0") // json 데이터 파싱 라이브러리 implementation("com.squareup.retrofit2:converter-gson:2.9.0") // 네트워크 통신 로그 남기는 라이브러리 implementation("com.squareup.okhttp3:logging-interceptor:4.9.0") build.gradle파일의 dependencies에 위 코드 작성 (공식 홈페이지에 있는 버전 확인해서 사용하기) manifest 파일엔 위 코드 작성 public class NetworkClient { public sta.. 2024. 1. 4.
[Android Studio] Volley 라이브러리로 통신 시 Header에 데이터 세팅하는 방법 네이버 파파고(번역) API ( https://developers.naver.com/docs/papago/papago-nmt-api-reference.md#%ED%8C%8C%EB%9D%BC%EB%AF%B8%ED%84%B0 ) 설명서를 보며 구현 중에 Header에 발급받은 클라이언트 ID와 클라이언트 secret 값을 넣어서 요청해야 한다고 써있다. JsonObjectRequest request = new JsonObjectRequest( // 위 아래 코드들은 생략 ){ @Override public Map getHeaders() throws AuthFailureError { Map headers = new HashMap(); headers.put("X-Naver-Client-Id", Config.X_.. 2024. 1. 3.
[Android Studio] Volley 라이브러리를 이용한 POST 통신 방법 (body에 json 보내기) 그 동안은 Volley 라이브러리로 네트워크 통신할 때 GET 방식과 body는 null로만 보냈었는데, 네이버 파파고 api 이용을 위해 공식문서를 보면서 POST 방식으로 body에 데이터를 담아 보내봤다. RequestQueue queue = Volley.newRequestQueue(MainActivity.this); String url = "https://openapi.naver.com/v1/papago/n2mt"; JSONObject body = new JSONObject(); try { body.put("source", "ko"); body.put("target", target); body.put("text", sentence); } catch (JSONException e) { return;.. 2024. 1. 3.
[Android Studio] RecyclerView 페이징 처리하기 YouTube API를 이용해 입력받은 검색어를 유튜브에 검색해서 관련 영상의 타이틀과 내용, 썸네일을 가져오는 중에, 리사이클러뷰는 25개까지 표시하고 맨 밑까지 내려갔을때 추가로 가져올 수 있게 페이징 처리하는 코드를 작성했다. recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() { @Override public void onScrollStateChanged(@NonNull RecyclerView recyclerView, int newState) { super.onScrollStateChanged(recyclerView, newState); } @Override public void onScrolled(@NonNull Recycl.. 2024. 1. 3.