달력

09

« 2018/09 »

  •  
  •  
  •  
  •  
  •  
  •  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  •  
  •  
  •  
  •  
  •  
  •  
2018.08.27 14:13

RecyclerView 내부 view에 이벤트 달기... Android2018.08.27 14:13

RecyclerView Item에 버튼이나 체크박스가 있을때 발생되는 이벤트를 Adapter에서 처리 할수도 있겠지만, 어쩔수 없이

Activity에서 처리를 해야 할때도 있다...이럴때 구현하는 방법을 남겨본다...이렇게 라도 안하면...까먹어서..ㅠㅠ

내가 알고 있는 방법은 두가지가 있다. 첫번째를 Tag를 이용하는 방법과, 이벤트 리스너를 만들어서 하는 방법이 있는데,

이벤트 리스너를 만들어서 처리 하는 방법으로 남긴다.

우선 class가 하나 필요 하다.

(activity에 inner 클래스로 만들어도 된다.)

public class ListEventListener {

private OnViewItemClickListener onViewItemClickListener;

public interface OnViewItemClickListener{
public void onViewItemClick(Map<String, String> item);
}
}

리스트에 있는 특정 view에서 이벤트가 발생이 되면 해당 item에 대한 데이터 전체를 받을 거라서 인자값을 Map으로 했다..


Activity에서는 아래 처럼 이벤트가 발생 했을때 처리할 리스너를 구현해 준다.

ListEventListener.OnViewItemClickListener onViewClickListener =
new ListEventListener.OnViewItemClickListener() {
@Override
public void onViewItemClick(Map<String, String> item) {
Toast.makeText(OrderAddActivity.this, "이벤트 테스트", Toast.LENGTH_SHORT).show();
}
};

그리고 RecyclerView Adapter 생성자에 onViewClickListener를 넘겨주고

OrderAddAdapter adapter = new OrderAddAdapter(this, onViewClickListener);


Adapter에서는 아래처럼 이벤트가 발생했을때 인자로 넘긴 이벤트 리스너를 호출해 주면 Activity에 구현된 

이벤트 리스너가 실행이 된다...

holder.ivDelete.setOnClickListener { v ->

onViewClickListener.onViewItemClick(item)
}


알면 참 쉬운데...모르면 개고생 인듯...ㅡㅡ;;;

Posted by 라면사리누구야!!

listview, recyclerview를 사용하면서 리스트 안에 checkbox를 넣어야 할경우

체크된 상태를 유지를 못하게 된다.

대부분 아래 코드와 같을 거라 본다...

holder.cbFavoritItem.setOnCheckedChangeListener(
CompoundButton.OnCheckedChangeListener { buttonView, isChecked ->

if (holder.cbFavoritItem.isPressed){
onCheckedChange.onViewCheckedChange(isChecked, item)
}
})

이렇게만 해서 리스트를 구현을 하게 되면 나타나는 증상은 체크박스에 체크를 하고 리스트를 아래로 스크롤을 하고 다시 체크한 항목이 있는 위치로 오게 되면 체크가 풀려 있는 현상이 나타나게 되거나 또는 스크롤을 아래로 내리다 보면 체크가 안되어 있는 항목이 체크 되어 있는 등의 증상들이 나타나게 된다. 


holder.cbFavoritItem.setOnCheckedChangeListener(null)

이럴때는 위 코드 처럼 이벤트를 등록하기 전에 null로 초기화 후 이벤트를 등록해 주면 된다.

만약에 리스트에 들어갈 데이터에 특정 상태값에 따라 체크를 바꿔줘야 한다면, 


holder.cbFavoritItem.isPressed

위 코드를 통해서 사용자에 의해 발생된 이벤트인지 여부를 판단해서 처리해 줘야 하는것도 까묵지 말자...


전체 소스중에 해당되는 부분만 추려 보면 아래와 같다.


holder.cbFavoritItem.setOnCheckedChangeListener(null)

if (isFavorit == "T") {
holder.cbFavoritItem.setChecked(true)
}
else{
holder.cbFavoritItem.setChecked(false)
}

holder.cbFavoritItem.setOnCheckedChangeListener(
CompoundButton.OnCheckedChangeListener { buttonView, isChecked ->

if (holder.cbFavoritItem.isPressed){
onCheckedChange.onViewCheckedChange(isChecked, item)
}
})


Posted by 라면사리누구야!!

Source: StatCounter Global Stats - OS Market Share



윈도 점유율은...역시나 어마어마 하구만~ 

리눅스...1.48% 

후훗~ 그럼 난 전세계 1%에 속하는구마잉~ ㅋㅋㅋ

이런거라도 1% 클럽에 들수 있어서...가문에 영광 이구만~ ㅎㅎ

리눅스 쓰면 전세계 1% 클럽에 들수 있어요~~ 리눅스 쓰세요~ ㅋㅋㅋㅋ


Posted by 라면사리누구야!!
2018.08.07 15:12

Tomcat SSL적용 및 리다이렉트 Was2018.08.07 15:12

아~ 드뎌 https를 적용했더니...속이 후련 하구만~

Tomcat에 ssl 설명이 잘 되어 있는 블로그가 있어 링크 남겨봄...


http://victorydntmd.tistory.com/246


도메인이 있고 서버에 공인IP가 할당되어 있다고 하면 

3) Let's Encrypt 인증서 발급

까지 하고 8번으로 넘어가서 

Tomcat에 webapp에 .well-known/acme-challenge 폴더를 생성하고 진행 하면 된다.

그리고 리다이렉트는


http://offbyone.tistory.com/262

요 블로그를 보면 된다~


참~ 쉽죠잉~

Posted by 라면사리누구야!!
2018.08.02 17:19

재부팅시에 특정 명령 실행 시키기... Linux2018.08.02 17:19

CentOS 7에서 시스템이 재부팅이 되면서 Tomcat이 올라오지 않아 새벽에 연락이 왔다..ㅡㅡ;;;

그래서 재부팅이 되면 톰켓이 올라 올라오게 했다...


/etc/profile.d/

요 경로에 가보면 .sh 파일들이 몇개 있는데 cp로 기존에 있던걸 하나 복사를 해서


예) cp aaa.sh bbb.sh

원본인 aaa.sh 파일을 bbb.sh 이름으로 복사해라~ 는 의미다...


vi 명령어로 bbb.sh 파일을 열어서 복사를 했으니 원본의 내용이 있겠지...

다~ 지우고 

./home/user/tomcat/bin/startup.sh


등록을 해주고 :wq! 로 빠저 나오면 된다...


/etc/profile.d/ 경로에 있는 스크립트 파일들은 부팅을 하면서 실행이 되는 스크립트 파일들이다...


Posted by 라면사리누구야!!