본문 바로가기
Front-end/Android (안드로이드 앱 개발)

Android Studio , ListFragment & DialogFragment

by javapp 자바앱 2020. 8. 7.
728x90

 

Fragment 내에 ListView를 사용할 경우 보다 편리하게 구성할 수 있도록 제공되는 Fragment

 

Listview의 id가 @android:id/list 로 설정되어 있을 경우 자동으로 ListView를 찾아 관리

 

ListFragment : ListView를 보다 쉽게 사용

(내 생각엔 한 화면에 짧게 리스트로 쓸 경우)

 

ListView : 대량의 정보를 List로 화면에 띄울 경우

 

1.

<fragment.xml>

<ListView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@android:id/list"          //아이디 설정
/>



 

2.

<fragment.java>

 

public class SubFragment extends ListFragment {
    TextView text1;
    String[] list = {"항목1", "항목2","항목3"};

    public SubFragment() {
        // Required empty public constructor
    }
    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_sub, container, false);
        text1 = view.findViewById(R.id.textView);

        //리스트 뷰에 적용할 어댑터를 생성한다.
        MainActivity activity = (MainActivity) getActivity();
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(activity, android.R.layout.simple_list_item_1, list);
        //어댑터를 리스트 뷰에 적용
        setListAdapter(adapter);

        return view;
    }

    //리스트뷰의 항목을 터치하면 호출되는 함수
    @Override
    public void onListItemClick(@NonNull ListView l, @NonNull View v, int position, long id) {
        super.onListItemClick(l, v, position, id);

        text1.setText("선택한 항목: "+ list[position]);
    }
}

 

 3. 메인 레이아웃 아이디 설정

android:id="@+id/container"

 

 

4. <메인>

public class MainActivity extends AppCompatActivity {

    SubFragment subF = new SubFragment();
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


        FragmentManager manager = getSupportFragmentManager();
        FragmentTransaction tran = manager.beginTransaction();
        tran.replace(R.id.container, subF);
        tran.commit();
    }
}

 


 

 

DialogFragment

콘텐츠 위에 떠있는 오버레이 모달창

일반적으로 경고 대화 상자, 확인 대화 상자를 표시하거나 다른 활동으로 전환하지 않고 오버레이 내에서 정보를 요청하는 데 사용한다.

커스터 마이징 가능

 

public class SubDialogFragment extends DialogFragment {
    public SubDialogFragment() {
        // Required empty public constructor
    }

    @NonNull
    @Override
    public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
        MainActivity activity = (MainActivity)getActivity();

        AlertDialog.Builder alBuilder = new AlertDialog.Builder(activity);
        alBuilder.setTitle("타이틀");
        alBuilder.setMessage("메시지");

        alBuilder.setPositiveButton("positive",new DialogListener());
        alBuilder.setNeutralButton("중립",new DialogListener());
        alBuilder.setNegativeButton("negative",new DialogListener());

        AlertDialog alert = alBuilder.create();

        return alert;
    }

    class DialogListener implements DialogInterface.OnClickListener
    {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            MainActivity activity = (MainActivity)getActivity();

            switch (which)
            {
                case DialogInterface.BUTTON_POSITIVE :
                    activity.textView.setText("positive");
                    break;
                case DialogInterface.BUTTON_NEUTRAL :
                    activity.textView.setText("neutral");
                    break;
                case DialogInterface.BUTTON_NEGATIVE :
                    activity.textView.setText("negative");
                    break;
            }
        }
    }
}

 

<메인>

// 다이얼로그로 띄울 프래그먼트의 객체를 생성
SubDialogFragment subdialf = new SubDialogFragment();
FragmentManager fmanger = getSupportFragmentManager();
//프래그먼트 다이얼로그를 띄운다.
subdialf.show(fmanger,"tag");

 

guides.codepath.com/android/using-dialogfragment

 

Using DialogFragment | CodePath Android Cliffnotes

Overview DialogFragment is a specialized Fragment used when you want to display an overlay modal window within an activity that floats on top of the rest of the content. This is typically used for displaying an alert dialog, a confirm dialog, or prompting

guides.codepath.com

 

댓글