마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

다이얼로그로 입력받은 텍스트가 그리드뷰에 들어갔다가 사라져요!

0 추천
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
    //DBManager dbManager = new DBManager(getApplicationContext(), "Sub.db", null, 1);
    //------------------------------------------------------------
    if (convertView == null) {
        convertView = mLiInflater.inflate(R.layout.row, null);

        Log.d("tag", "레이아웃");
    }else{
        Log.d("tag",  "else 레이아웃");
    }
    //------------------------------------------------------------
    //
    // 리턴할 레이아웃의 자식뷰들의 내용을 설정합니다.
    //한개의 뷰(셀) 안에 들어갈 것들을 정의
    Log.d("tag", "m");



    mTvCalendar = (TextView) findViewById(R.id.textSubTitle); //날짜부분

    final TextView textViewSubTitle
            = (TextView) convertView.findViewById(R.id.textSubTitle);


    textViewSubTitle.setBackgroundColor(defaultColour);
    textViewSubTitle.setText(mSubList.get(position)); //이걸 통해서 텍스트 뷰에 배열 내용을 집어넣음


    Log.d("tag", "텍스트뷰에 배열을 넣음");


    //텍스트뷰를 길게 눌렀을때 삭제하는 이벤트/////////////////////////////////////////////////
    textViewSubTitle.setOnLongClickListener(new View.OnLongClickListener() {
        @Override
        public boolean onLongClick(View v) {
            ShowMenu(textViewSubTitle.getText().toString(), position);
            Log.d("tag", "warning message long click");
            return false;
        }
    });



    //텍스트뷰를 한번 클릭했을때
    textViewSubTitle.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {

            Log.d("tag", "onClick");
            //셀 한개를 터치했을때 동작하는 곳

            /////////만약 수정모드에 들어갔다면///////////////////////////////////////
            if (modi == 1) {
                if ((position > 6) && (position % 6 != 0)) {

                    Toast.makeText(getApplicationContext(), position + "을 클릭", Toast.LENGTH_SHORT).show();

                    ///////AlertDialog
                   AlertDialog.Builder aDialog = new AlertDialog.Builder(MainActivity.this); //다이얼로그객체선언

                    Context mContext = getApplicationContext(); //해당레이아웃의정보얻기
                    LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(LAYOUT_INFLATER_SERVICE); // 레이아웃설정
                    final View layout = inflater.inflate(R.layout.custom_dialog, (ViewGroup) findViewById(R.id.layout_root));




                    aDialog.setView(layout);//다이얼로그에 레이아웃을 추가
                    //aDialog.show();//다이얼로그 띄우기

                    //다이얼로그 화면 구성
                    aDialog.setTitle("과목을 추가합니다.");
                    Log.d("tag", "에디트텍스트 불러옴");


                    aDialog.setPositiveButton("저장", new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int Conwhich) {

                            Log.d("tag", "포지티브버튼 들어감");
                            // 텍스트 입력란이 빈 공간이면 무시

                            EditText et1 = (EditText) layout.findViewById(R.id.editText); //다이얼로그에 있는 에디트 텍스트를 불러온다.
                            EditText et2 = (EditText) layout.findViewById(R.id.editText2); //다이얼로그에 있는 에디트 텍스트를 불러온다

                                if ("".equals(et1.getText().toString())) {
                                    Toast.makeText(getApplicationContext(), "모두 기입해주세요.", Toast.LENGTH_SHORT).show();
                                    Log.d("tag", "공백");
                                    return;
                                } else {
                                    Toast.makeText(getApplicationContext(), "저장", Toast.LENGTH_SHORT).show();
                                    Log.d("tag", "토스트메시지 저장");
                                    textViewSubTitle.append(et1.getText().toString());
                                    textViewSubTitle.setBackgroundColor(checkedColour);
                                }
                                Log.d("tag", "에디트텍스트 끝남");

                        }
                    });

위에는 어댑터에 있는 겟뷰 메서드입니다.
저기 중간에 보면 다이얼로그가 들어있구요.
다이얼로그로 과목명을 입력받아 시간표 그리드뷰에 나오게해야하는데

뭐가 문제인지.. 다이얼로그의 저장을 누르면 그리드뷰에 들어갔다가도
다시 사라집니다... ㅠㅠ 왜 그런걸까요??

E/SELinux: [DEBUG] seapp_context_lookup: seinfoCategory = default
E/SELinux: [DEBUG] seapp_context_lookup: seinfoCategory = default
E/ViewRootImpl: sendUserActionEvent() mView == null
E/ViewRootImpl: sendUserActionEvent() mView == null
E/ViewRootImpl: sendUserActionEvent() mView == null
E/ViewRootImpl: sendUserActionEvent() mView == null
김달아 (180 포인트) 님이 2015년 11월 9일 질문
김달아님이 2015년 11월 10일 수정

1개의 답변

0 추천
http://theeye.pe.kr/archives/1253

뷰 홀더 패턴을 적용해보세요
익명사용자 님이 2015년 11월 10일 답변
...