Dev/Android

3. 안드로이드 AlertDialog의 값 전달 받아서 ListView 구현하기

zapi 2023. 8. 17. 23:00

개발하다가 좀처럼 정보도 없어서 머리 좀 싸매다가 우연찮게 코드가 짜였다. 근데 기껏 코드 짰더니 막상 안 쓰는게 나을 거 같아서 아까우니까 여기에다가라도 정리해야지 언제 쓰일지 모르니까

// 메뉴로 다이얼로그 호출
activity_main.xml

<ListView>
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id = "@+id/list_view"
</ListView>

 

MainActivity.java

import android.app.AlertDialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.ListView;

import java.util.ArrayList;
import java.util.List;


public class MainActivity extends AppCompatActivity{

    List<String> list = new ArrayList<>();

    @Override
    public void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_list);

        ListView listView = (ListView)findViewById(R.id.list_view);

        ArrayAdapter<String> adapter = new ArrayAdapter<>(this,
                android.R.layout.simple_list_item_1, list);

        listView.setAdapter(adapter);

        getSupportActionBar().show();

    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.menu, menu);
        return super.onCreateOptionsMenu(menu);
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        int id = item.getItemId();

        if(id == R.id.add_list){
            openAddListDialogue();
        }

        return super.onOptionsItemSelected(item);
    }

    public void openAddListDialogue(){

        final EditText input = new EditText(this);

        new AlertDialog.Builder(this)
                .setTitle("Add List")
                .setMessage("Enter name")
                .setView(input)
                .setPositiveButton("OK", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        list.add(input.getText().toString());
                    }
                })
                .setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {

                    }
                }).show();
    }
}

 

menu.xml

<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">
    <item android:id="@+id/add_list"
        android:title="add list"
        app:showAsAction="always"></item>
</menu>