kotlin 의 Recycle View 우아 한 클릭 이벤트

11243 단어 Androidkotlin
클릭 이벤트 에 대해 서 는 낯 설 지 않 을 것 같 습 니 다. 오늘 은 RecycView 에서 의 클릭 이벤트 와 함께 자바 와 kotlin 감청 사건 의 차이 점, kotlin 의 함수 식 인 터 페 이 스 를 어떻게 우아 하 게 보 는 지 알 아 보 는 것 을 소개 합 니 다.
여러분, 한 걸음 씩 오 세 요. 저희 가 먼저 자바 를 소개 하 겠 습 니 다.
1, 심 플 뷰 클릭 이벤트
        view1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                
            }
        });

원본 코드 는 원본 코드 에서 볼 때 인터페이스 입 니 다. 우 리 는 프론트 인터페이스 에서 이 인 터 페 이 스 를 되 돌려 데 이 터 를 전송 합 니 다.
    /**
     * Interface definition for a callback to be invoked when a view is clicked.
     */
    public interface OnClickListener {
        /**
         * Called when a view has been clicked.
         *
         * @param v The view that was clicked.
         */
        void onClick(View v);
    }

2, 간단 한 ListView 의 아 이 템 클릭 이벤트
        listview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                
            }
        });

원본 코드: 원본 코드 의 주석 에서 볼 때 이것 은 인터페이스 입 니 다. AdapaterView 의 Item 이 클릭 되 었 을 때 호출 됩 니 다.
    public interface OnItemClickListener {

        /**
         * Callback method to be invoked when an item in this AdapterView has
         * been clicked.
         * 

* Implementers can call getItemAtPosition(position) if they need * to access the data associated with the selected item. * * @param parent The AdapterView where the click happened. * @param view The view within the AdapterView that was clicked (this * will be a view provided by the adapter) * @param position The position of the view in the adapter. * @param id The row id of the item that was clicked. */

void onItemClick(AdapterView<?> parent, View view, int position, long id); }

3, RecycView 의 클릭 이벤트
        ,RecycleView      ,        ,    

4, RecycView 의 클릭 이벤트 자바 구현 모드
자바 구현 모드 란 인 터 페 이 스 를 정의 하 는 것 입 니 다. 클래스 에서 이 인 터 페 이 스 를 실현 하고 adapter 에서 이 인 터 페 이 스 를 호출 하면 데 이 터 는 실현 클래스 로 전 송 됩 니 다. 자, 지금부터 시작 합 시다.
//        
var listener:Listener<BEAN>? = null
//      
interface Listener<BEAN>
{ 
	fun onClick(data:BEAN)
}
fun setMyListener(listener:Listener<BEAN>){
	this.listener = listener
}

여기 서 우 리 는 프론트 인터페이스 류 에서 이 Listener 류 를 실현 한 다음 에 인터페이스 에서 이 listener 를 전달 하면 됩 니 다. 즉, 하나의 유형 으로 이 인 터 페 이 스 를 감 싸 야 합 니 다. 그러면 조금 귀 찮 습 니 다. 잠시 후에 우리 뒤에 kotlin 의 우아 한 쓰기 방법 을 소개 하 겠 습 니 다.
class MyActivity :Listener<BEAN>{

//                
	override fun onClick(data:BEAN)
	{
	//          
	}
	//          ,      listener    
	adapter.setMyListener(this)
	//        Listener  ,  ,    this    
}

5, RecycView 의 클릭 이벤트 Kotlin 구현 모드
kotlin 은 함수 식 프로 그래 밍 능력 을 가지 기 때문에 프로 그래 밍 에 있어 강력 한 편리 성 을 제공 합 니 다. kotlin 에서 함수 와 클래스 는 평등 하고 클래스 의 단독 존재 에 독립 할 수 있 습 니 다.
//         
var listener:((itemBean:ITEMBEAN)->Unit?)? =null
//        ,         ,          ,      
fun setMyListener(listener:(itemBean:ITEMBEAN)->Unit){
	this.listener = listener
}

//adapter       , onBindViewHolder   
override fun onBindViewHolder(p0: BaseListAdapter.BaseListHolder, p1: Int) {
....    

//    kotlin      ,       
itemView.setOnClickListener{
	listener?.let{
		data
	}
	//let              
	//listener?.invoke(data)    
}

}



화면 에서 Activity 나 Fragment 같은 거.
adapter.setMyListener{ it

//        ,     it,       ,        
//   it       
it.name
it.age
......

}

좋은 웹페이지 즐겨찾기