본문 바로가기
안드로이드 자바

[Java][Android] 안드로이드 인터페이스 사용하기 / interface

by teamnova 2024. 7. 19.
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>

 

시연 화면