728x90
리사이클러뷰를 구현 할 때 이벤트 클릭관련 여러가지 기능을 하고싶을 때 안되서 어려운 경우가 있었습니다.
인터페이스를 사용하게 되면 클릭 기능을 어댑터 클래스가 아닌 메인클래스에서 구현이 가능해 집니다.
간단한 예제로 작성해 봤습니다.
메인엑티비티
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
public class MainActivity extends AppCompatActivity {
EditText editText;
Button button;
String sendText;
String TAG = "MainActivity";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
editText = findViewById(R.id.editText);
button = findViewById(R.id.button);
// Receive 객체 생성
Receive receive = new Receive();
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
sendText = editText.getText().toString();
Log.i(TAG, "순서 1 : onClick: sendText : " + sendText);
receive.StringSend(sendText);
Log.i(TAG, "순서 3 : onClick: 텍스트를 전송했습니다!");
}
});
}
}
받는 클래스
import android.os.Bundle;
import android.util.Log;
import androidx.appcompat.app.AppCompatActivity;
public class Receive extends AppCompatActivity implements StringSend {
String TAG = "Receive";
String Receive_Text;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.receive);
// 해당클래스에서 인터페이스로 받은 데이터를 사용해서 코드를 작성 할 수 있습니다.
// ex)어댑터, 뷰홀더 클래스 등등
}
@Override
public void StringSend(String s) {
Receive_Text = s;
Log.i(TAG, "순서 2 : StringSend 에서 받은 텍스트 : " + Receive_Text);
}
}
인터페이스
public interface StringSend {
void StringSend(String s);
}
xml
<!-- activity_main.xml -->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:padding="16dp"
tools:context=".MainActivity">
<EditText
android:id="@+id/editText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Enter text here" />
<Button
android:id="@+id/button"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Send" />
</LinearLayout>
시연 화면
'안드로이드 자바' 카테고리의 다른 글
[JAVA][Android] CoordinatorLayout에서 BottomSheet 사용하기 (0) | 2024.07.21 |
---|---|
[Java][Android] Glide 라이브러리를 사용해 원형 이미지 뷰 만들기 (0) | 2024.07.20 |
[JAVA][Android] BottomSheetDialogFragment 배경색 및 테두리 둥글게 변경 (0) | 2024.07.18 |
[JAVA][Android] 알라딘 도서 검색 Open API 사용하기 (Retrofit 사용) (2) | 2024.07.17 |
[JAVA][Android] BottomSheetDialog 사용하기 (0) | 2024.07.15 |