Comments (19)
7/9
- 로그인, 메인 화면 구성
- 키보드 줄 여러개 여부는 singleLine 사용하자 ← '민원접수'할 때 사용
- 뭔가 안될 땐 logcat, debug 사용하자.
from khuhelper.
7/10
- 충전소 검색 화면 구성
- 액티비티 전환되자마자 키보드 띄우기
[Android] 키보드 뜨게하기 Keyboard Up
포스팅 해놨지롱
from khuhelper.
7/12
- 충전소 세부사항 레이아웃 구성
- 리사이클러뷰를 보는 중
- 어떻게 구성하는게 좋을라나 ~~
from khuhelper.
7/13
-
민원접수 화면 구성
-
이미지 비율 맞추기 (ImageView, src)
[안드로이드 레이아웃]ImageView 높이 이미지 비율에 맞게 설정하기<ImageView android:layout_width="wrap_content" android:layout_height="24dp" android:adjustViewBounds="true" android:src="@drawable/ic_ev_place" />
adjustViewBounds 속성을 추가하고, 따라갈 크기는 wrap_content로 해준다.
이미지는 background가 아닌 src로 해줘야 한다!! -
edt 속성 (이메일타입, 멀티라인)
안드로이드 에디트텍스트 속성 5. [inputMethod, inputType] (Android EditText Attributes 5)
옛날자료이지만 유용하다. 아래와 같은 식으로 사용<EditText android:inputType="textEmailAddress" android:singleLine="false" />
-
리사이클러뷰
RecyclerView(리사이클러뷰)의 원리와 사용법(feat. Kotlin)- 예제코드가 코틀린이지만 리사이클러뷰의 개념에 대한 이해는 되었다.
리사이클러뷰
: 뷰를 재활용하는 것.
예) 10개씩 화면에 띄운다면 뷰를 13개정도만 만든다. 어댑터를 이용해서 각 뷰에 내용을 넣어준다. 이때, 뷰만 재활용하기 때문에 뷰 내부의 레이아웃은 바뀔 수도 있다.- 리스트뷰의 경우, 100개의 데이터가 있다면 뷰도 100개...
안드로이드 리사이클러뷰 기본 사용법. (Android RecyclerView)
ㄴ 이거는 읽는 중
-
암튼 사용자 화면은 리사이클러뷰를 쓸 필요는 없어보인다. 스크롤뷰는 적용해야 될 듯. 관리자 화면에서 충전소 사용량, 민원 내역확인할 때 리사이클러 쓰면 되겠다!
from khuhelper.
7/14
- 어제 만든 레이아웃에 맞춰서 액티비티전환정도만 되는 클래스까지 만듦
- 토스트 메시지 띄우기
Toast.makeText(this.getApplicationContext(), <넣을 string>, Toast.LENGTH_SHORT).show();
- 클래스생성하면 제발 manifest에 등록하기!!
- 카카오 지도 api를 사용하기 위해 개발자 등록을 했다.
아 뭔가 멋져.... - 지도 연결 중! -> 따로 블로그 포스팅할 계획
자정이 넘었으니 14일은 여기까지
from khuhelper.
7/20
- 카카오 지도 연결
방법은 블로그에 포스팅함 ㅋㅅㅋ [Android] 카카오지도 연동하기 - 지도 표시하는 코드 추가하고 빌드함 ! → 검정화면만 뜸ㅠㅠ
- 검정화면만 뜨는 오류 해결
안드로이드 - 다음API 지도 오류 해결 정리
app key를 추가하기 위한 meta-data를 application안에 넣어줘야 됨<application ... <meta-data android:name="com.kakao.sdk.AppKey" android:value="<native-app-key>"/> </application>
- 앱 사용시에만 위치 정보에 액세스되도록 권한 수정
- 애뮬레이터로 빌드 확인 → 진짜 안되네...
- 타이틀바 없애기
- styles.xml 에서 아래 코드 두 줄을 추가해서 성공!
[안드로이드] 안드로이드 타이틀바, 상태바 없애기<resources> <!-- Base application theme. --> <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> ... <item name="windowActionBar">false</item> <item name="windowNoTitle">true</item> </style> </resources>
- 마커 추가 테스트
일단 직접 입력하는 방식으로 마커를 하나 추가해보았다.
Kakao 지도 API - Marker - 충전소 위치 등록 (마커표시) 시 문제점
- (위도, 경도) 형태로 입력해야 함 → 현재 엑셀에 있는 DB상으로는 도로명 주소... → 위도와 경도를 알려주는 지도는 구글맵.. → 1. (위도, 경도) 형태로 입력해야 함 → 현재 엑셀에 있는 DB상으로는 도로명 주소... → 위도와 경도를 알려주는 지도는 구글맵.. →
엑셀에서 자동으로 위치를 추출해서 좌표로 바꾸어 저장하는 프로그램을 짜야되나?도로명주소 좌표변환
이라고 검색하니까 프로그램이 많이 뜬다! 활용하면 될 듯 - 마커 표시 1개 하는데 6줄의 코드를 작성해야 함 → DB에 장소를 저장해서 while문을 돌리거나 해결법이 필요함 → 암튼 DB를 사용해야됨 → 구글에서는
Room
이라는 DB를 SQLite 보다 권장하는 중. 서버에 연결할 수도 있고..? 근데 일단 로컬로 !!
- (위도, 경도) 형태로 입력해야 함 → 현재 엑셀에 있는 DB상으로는 도로명 주소... → 위도와 경도를 알려주는 지도는 구글맵.. → 1. (위도, 경도) 형태로 입력해야 함 → 현재 엑셀에 있는 DB상으로는 도로명 주소... → 위도와 경도를 알려주는 지도는 구글맵.. →
from khuhelper.
7/30
- 충전소 위치 현황을 제공받은
xls 파일
이 아닌,Open API
를 이용하기로 결정!
→ DB에 저장 안 해도 됨 + 위도, 경도 포함 → 7/20 고민 해결!
다음 네 개 중 하나 고르자
from khuhelper.
8/1
-
공공데이터 API 연결하기
- 전기자동차 충전기 정보 조회 서비스, XML, REST 방식
- 일반인증키(UTF-8)
-
SERVICE KEY IS NOT REGISTERED ERROR
에러 발생
공공데이터포털 FAQ
그러하다.. (1) URL 디코딩작업필요 (2) 발급받고 1시간 이후 사용
일단 기다려보자 ~~
기다려도 안 된다. URL 디코딩을 해주자..
천상나타블로그 - URL인코더, 디코더
위 링크에서 변환함. (%
가 빠진 형태가 되면 성공) -
뭔가 된다 !!! (약 2시간 있다가 URL 디코딩한 거 씀)
-
자바 코드 추가 (안스)
[Android] 공공기관 데이터 포털 API 신청 + android xml 파싱
이 블로그 보고 함! (거의 복붙..) 일단 연결이 된 것에 의의를 둔다.
뿌듯
from khuhelper.
8/3
- API에서 받아온 충전소들을 지도에 마커로 표시하기
- 객체를 여러개 만들어서 각 충전소의 정보를 저장해야하나? 메모리 낭비느낌
- 현재 화면에 보이는 지도 영역에만 마커가 표시되었으면!
- 마커를 커스텀마커로 바꾸니까 표시되지 않는다. → png 이미지 사용하면 됨 → 화질구지인데.. 일단 다음에 생각하자.. (현재 이미지 크기 : 19*27)
- 원하는 데이터만 파싱해오면 좋은데, 해당 api는 파라미터가 '서비스키'밖에 존재하지 않는다.. 따라서 특정 id로 찾을 수없으므로 내가 기록해두는 수 밖에 없다.
→ 8/1코드 참고해서 파싱해서 class에 저장! 그리고 다중마커로 띄우기
(파라미터가 있는 경우) 보통항목명=입력&항목명=입력
이런 방식인듯 예)addr=경기도&serviceKey="dfhsf"
- 다중 마커 표시 성공
처음엔 띄워지지 않아 당황했다. 정확한 좌표값을 넣으니 성공했음
from khuhelper.
8/4
-
비동기로 api에서 데이터 받아와서 리스트에 저장
asyncTask
이용...-
여기 보고 응용함
안드로이드 스튜디오 : 공공데이터의 활용(2) - XmlPullParser를 이용한 XML 데이터 파싱
ArrayList에 파싱해서 저장은 성공!! 문제는 이 리스트를 어떻게 메인 액티비티에 전달하느냐.. -
AsyncTask 개념
[Android] 안드로이드 - AsyncTask 구현 예제
안드로이드 AsyncTask 사용하기.public class MyAsyncTask extends AsyncTask<Integer, String, Long>
기본형태는 아래처럼 extends를 받고 generic 타입을 정해준다.
필수 override 함수는 doInBackground() 이고 나머지는 필요에 따라 선언
첫번째 : doInBackground에서 사용될 파라메터 (post에서 사용될 파라메터를 return)
두번째 : onProgressUpdate에 사용될 파라메터
세번째 : onPostExecute에 사용될 파라메터 -
(참고) 이런 방법이 있다.
execute().get();
지금은 적용 안 되지만 나중에 활용하길
[안드로이드] AsyncTask결과값 얻어오기
-
-
리스트를 메인으로 넘길 방법을 고민하던 중 성규님께서 콜백을 사용하라고 조언해주셨다! 츄라이 고
-
인터페이스, 콜백 공부
안드로이드로 배우는 자바의 인터페이스 (콜백, 리스너, 옵저버)
[AsyncTask] 비동기작업 - 쓰레드(Thread)
→ 1번 보고 listener구현 해보고 2번 보고 따라하면 콜백 끝 -! -
Interface
: 클래스가 반드시 구현해야 할 행동을 정의한 추상클래스- 구현 : 인터페이스에 정의된 모든 메서드를 구현해야 함!!
implements
키워드 사용// interface (추상클래스) public interface Car { public void move(int key); // 정의만!! // 구현 public class Sportscar implements Car { @Override public int move(int key) { key += 30; return key; } public class Minicar implements Car { @Override public void move(int key) { key += 3; return key; }
- 추상화 를 통해 다형성 구현 가능
- 다형성 : 형태가 달라지는 것. 확장성 좋아짐. 결합도가 강하지 않은 프로그래밍 가능
(위의 코드에서 Sportcar와 Minicar가 둘 다 Car 이라는 타입이고, move라는 메소드를 가지고 있지만 형태가 다르다.)
- 구현 : 인터페이스에 정의된 모든 메서드를 구현해야 함!!
-
콜백 구현..! 은 했는데, 파싱에서 에러가 발생했다.
- There was an error: null : For input string: "37.571076"
- 위도, 경도를 int 로 해놨는데 float였구나..?
- There was an error: null : For input string: "GP190415"
- 충전소ID가 int로만 구성된게 아니였구나..?
-
I/Choreographer: Skipped 45 frames! The application may be doing too much work on its main thread.
-
일단 10개만 받아오게 수정했는데, 리스트에 2개만 들어가 있음. 심지어 아무 정보도 들어있지 않다. 무슨일이지?
-
또 문제 발생.. 리스트에 첫번째 객체가 null 이라서 마커표시할 때 에러발생!
- tag가 item 일 때만 코드가 실행되도록!! → 해결됨
🎊
if (tag.equals("item")) { csList.add(setChargingStation()); }
- 진짜 뭘 사용할 때 자료 분석은 필수인 듯
- tag가 item 일 때만 코드가 실행되도록!! → 해결됨
from khuhelper.
8/12
- 관리자 페이지 시작
- 최적지분석 지도에 표시하기
- 일단 데이터파일의 형태
- 0811.json 으로 바꿔서 로컬(assets) 이용해서 파싱할 것!
- json이 안 불러와지는것 같아서 프로그램이용해서 개행분리를 했더니 json으로 받아오긴 함!
- 레퍼런스
https://lktprogrammer.tistory.com/175 - 기본적인 가져오기
https://blog.naver.com/PostView.nhn?blogId=qbxlvnf11&logNo=221432824912&categoryNo=44&parentCategoryNo=0&viewDate=¤tPage=1&postListTopCurrentPage=1&from=postView
https://stackoverrun.com/ko/q/3081178 - 배열
- 에러
- 배열→오브젝트 순이구나.. 맞추기 디게까다롭네
- 동찬이꺼 표시할 페이지...
from khuhelper.
8/14
- jsonㅇㅣ 왜 안열리나했더니... textview를 만든적이 없었다.
- 아! "features"를 "Feature"라고해서 ㅋ.ㅋㅋ.ㅋㅋㅋㅋ ㅠ 허무해 맑은정신맑은코딩 필수
하나가 뭉텅이로 들어왔다. arr[0][0] = "3.234234, 3,4342"
요런식
아마 한번 더 분리를 해야겠지
ㅓㄹ 성공!!!!!
자바에서는 무조건
ArrayList<AnalyzePlace> analyzePlaces = new ArrayList<>();
이렇게 할당해놔야되구나..! 안그러면 null로인식
-> 기본 array가 아니라 ArrayLIst(자료구조)를 사용했기 때문!
데이터 싹 바뀌었고 받아왔음!
어우 피곤...
남은일
- 다이얼로그 띄워서 상세정보 페이지
- 동찬 layout 만들기
- 민원 접수/ 확인 → json으로 저장
from khuhelper.
8/15
- 최적지분석 final point에 따라 마커 색상 다르게 표시.
- 국가에서 한 자료? 같은거보니까 보통 빨>주>노>초>파>남 등 무지개 순이다. 이걸 따라가는걸로
-
string builder pattern
string builder pattern -
나인패치도 했다. (말풍선)
나인패치 -
충전기 타입/상태 정보
-
액티비티가 전환될 때 값을 넘기는 데 어려움이 있어서 intent 사용
- intent 로 액티비티 생성할 때 값 넘기는 방법 : putExtra (객체도 넘기기 가능 대박..)
- [Android] 인텐트(Intent) 화면 간 이동과 데이터 전달
-
textView.setText(editText.getText());
edt에서 값 가져오는 방법... 허무! -
edittext 마지막 키보드 '완료' 동작하게 하는 법 + '다음' 설정
-
세얼드프리퍼런스에 객체 저장.. 생각해보니 하나만 되구나 디비가 역시 필요하긴 함ㅋㅋ
안드로이드 개발 SharedPreferences 객체와 배열 저장을 위한 gson 사용하는 방법 -
alertdialog가 자꾸 안떳는데... 알고보니
builder.show();
를 안해줬다;
안드로이드 개념 및 예제 - AlertDialog -
sharedpreference에서 editor사용하면 꼮
commit()
해주기! -
키보드로 화면 크기 재조정되게 manifest에 추가하면 끗!
<activity android:name=".admin.PredictActivity"
android:windowSoftInputMode="adjustResize" />
-
동찬코드삽입
-
compile 'com.squareup.okhttp3:okhttp:3.6.0'
이걸 해줘야된다 -
json 파일 파싱하려 노력함..
-
edittext이용
-
검색구현
string contains() 메서드
썼음
from khuhelper.
8/17
ㄷㅐ박... 안드로이드 라이프사이클의 중요성..!!
onResume을 이용해야된다. 다시 시작할때는...
약간 init기능 됨
쩐당
switch {
case :
<내용1>
startActivity();
<내용2>
break;
위 코드에서 startActivity() 가 실행된다고 <내용2> 가 실행되지 않는게 아님.
무조건 <내용2> 까지는 실행되고 break되는 것..!!
그래서 파란색으로 바꾸는 코드를 <내용2>에 하면 액티비티가 변하기 전에 변했다.
따라서 onResume안에 파란색으로 바꾸는 코드했더니 시기좋게 딱딱!
릴리즈 완료! (v1.0.0)
develop → release/v1.0.0 → 태그 달아주고 → git push 를 master에 바로!
훌 끝났당!!
from khuhelper.
8/27
- 알고보니 master가 아니라 develop에 머지했네... master에 머지해주었다.
- firebase 연결시도중 !!
from khuhelper.
8/28
-
ripple 효과 커스텀!
- 성규님이 아이디어 주셨다! custom ripple
[android] round corder + ripple effect
성공적 ><
모든 버튼에 적용해서 머지 완료!
- 성규님이 아이디어 주셨다! custom ripple
-
DB연결
- firebase 깃허브 예제 보면서 분석해보기로!
- 처음 json 설계가 중요하다고 한다.
from khuhelper.
9/2
- Firebase 연결
- key-value (기본적으로 Map형태)
- key값이 같으면 계속 값이 갱신된다. (새로 추가되지 않음)
child()
계속 붙여서 사용하면 중첩으로 하부를 만들 수 있다.push()
를 사용해서 저장하면 타임스탬프값을 가지고 key를 자동으로 생성한다. 출력에서 child이벤트리스너는 여기에 사용하면 유용하게 데이터를 제어할 수 있다. → 목록 만들기에 유용
from khuhelper.
9/3
-
리사이클러뷰로 petition list 넣을 레이아웃 만드는 중
-
context와 activity를 인자로 사용하는 것의 차이는 무엇일까? context와 fragment는?
-
activity를 새로 실행하고 새로운 액티비티에 의해 현 액티비티에 변화가 생겼을 때 →
startActivityForResult
를 이용한다. (resume이랑 잘 엮어보거라)
그리고 이를 recyclerView에서도 활용가능..!
[안드로이드] recyclerView에서 Activity로 인텐트 값 넘기기
[안드로이드]Recyclerview(리사이클러뷰) 구현 -
리사이클러뷰 클릭리스너 구현 두 가지 방법
- recyclerview.onItemTouchListener사용
Android RecyclerView 아이템 클릭 이벤트 구현 - 바로 사용 (adapter에 구현)
[안드로이드] 리싸이클러뷰 아이템 클릭시 이벤트 발생 시키기
- recyclerview.onItemTouchListener사용
-
arrayList 에 넣는데 자꾸 NPE가 뜬다
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.util.ArrayList.add(java.lang.Object)' on a null object reference
- 흠.......... 왜지......?
- <해결> ArrayList초기화 안 해줘서 ㅋ....
-
이번엔 리사이클러뷰에 아무것도 안뜸.. 리스트엔 다 들어갔는데!
- getItemCount의 개수가 맞지 않아서!!!!! 였다!!!!!!
리사이클러뷰 굉장히 자세한 설명!
[Android] 리사이클러 뷰(RecyclerView) 사용하기
- getItemCount의 개수가 맞지 않아서!!!!! 였다!!!!!!
-
리사이클러뷰 하나를 두 군데에서 사용하니까 문제가 발생했다. 이슈#36
from khuhelper.
9/7
-
데이터 불러오기
- child("petition") 해서 불러와야 됨!
-
그 내부 아이템을 가져올 때는
-
안된거
@Override public void onDataChange(@NonNull DataSnapshot dataSnapshot) { Petition petition = dataSnapshot.getValue(Petition.class); petitionList.add(petition); }
-
된거
@Override public void onDataChange(@NonNull DataSnapshot dataSnapshot) { for (DataSnapshot data : dataSnapshot.getChildren()) { petitionList.add(data.getValue(Petition.class)); } // LinearLayout 사용 recyclerView.setLayoutManager(linearLayoutManager); recyclerView.setAdapter(petitionAdapter); }
차이가 느껴 지시는지?
-
-
확인했으면 색 바뀌는거는 이제 리사이클러뷰 내에서 처리하도록!
- 처리는 되는데, 액티비티 되돌아왔을 때 확인이 안됨 ㅠㅠㅠ
from khuhelper.
Related Issues (20)
- feat: 사용량 예측모델 연결 HOT 1
- feat: 최적지분석 정제
- feat: 민원관리
- fix: 추천도 높은 마커가 위로오게 HOT 1
- feat: 민원 접수 답변 추가
- feat: 민원관리 firebase 연결
- fix: 버튼 ripple 효과 영역 조정
- refactor: MVP 또는 MVVM 패턴 적용
- fix: 지도 마커 표시 비동기로 수정
- fix: 어댑터(PetitionAdapter) 재사용에 의한 클릭이벤트처리 문제
- fix: 검색시 충전소와 이름이 일치하지 않는 문제
- fix: 민원처리후 바로 파란색으로 변하지 않는 현상
- fix: 사용량 예측 결과 표시 에러
- fix: 검색 뒤로가기 버튼 안 먹음 HOT 1
- fix: 마커 화면에 보이는 것만 표시 HOT 1
- feat: GPS 연동
- fix: 검색결과 없는 경우 예외처리
- fix: 충전소 외않떠..?
- fix: 비동기 RxJAVA 적용
- feat: 서버 개발
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from khuhelper.