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

alertDialog 종료후 커스텀 리스트뷰 갱신이 안됩니다.

0 추천
public class MainActivity extends Activity implements OnClickListener{
    WordDBHelper mHelper;
    EditText mText;
    SQLiteDatabase db;
    Cursor cursor;
    MyListAdapter myAdapter;
     
    ArrayList<MemoInfo> items;
    ListView listView;
     
     
    Activity activity;
    Context mContext;
     
    String memo;
    long timeNumber;
    int listNumber=0;
    int count=1;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
         
        Button addBtn = (Button) findViewById(R.id.addBtn);   
        listView = (ListView) findViewById(R.id.listView1);
         
         
        items = new ArrayList<MemoInfo>();
         
        mHelper = new WordDBHelper(this, "Memo.DB", null, 1 );
        db = mHelper.getReadableDatabase();
         
         
        method1();
         
        myAdapter = new MyListAdapter(this, R.layout.list, items);
 
        listView.setDrawSelectorOnTop(true);
        listView.setSelector(new PaintDrawable(0x5000ff00));
        listView.setAdapter(myAdapter);
        listView.invalidate();
        ////////////////////////////////////////////////////
        Log.e("sdfasdfasdf", "asdfasdfasdfasdfsdfasdfasdfasdfasd");
         
        addBtn.setOnClickListener(this);
         
    }
    public void method1(){
        String sql = "SELECT * FROM memolist ORDER BY time ";
         
        cursor = db.rawQuery(sql, null);
         
        while (cursor.moveToNext()) {
            int dbNumber = cursor.getInt(1);
            String dbMemo = cursor.getString(2);
             
            MemoInfo alarmInfo = new MemoInfo(dbNumber, dbMemo);
            Log.e("alarmInfo", alarmInfo+ "");
            items.add(alarmInfo);
        }
        cursor.close();
    }
     
    public void onClick(View v){
 
         
        switch (v.getId()){
        case R.id.addBtn :
            AlertDialog.Builder alert = new AlertDialog.Builder(MainActivity.this);
            alert.setTitle("메세지를 입력하세요");
            alert.setMessage(" ");
            alert.setCancelable(false);
            final EditText input = new EditText(MainActivity.this);
            alert.setView(input);
            alert.setPositiveButton("저장", new DialogInterface.OnClickListener() {
                 
                @Override
                public void onClick(DialogInterface dialog, int which) {
 
                    String edit_memo = String.valueOf(input.getText());
                    long timeNumber = System.currentTimeMillis();
                    int count = 0;
                     
                    mHelper = new WordDBHelper(MainActivity.this, "Memo.DB", null, 1);
                     
                    db = mHelper.getWritableDatabase();
                     
                    db.execSQL("insert into memolist values(" + timeNumber + ", "+ count + ", '" +edit_memo+"');");
                     
                    items.clear();
                     
                    method1();
                    myAdapter = new MyListAdapter(MainActivity.this, R.layout.list, items);
                     
                    myAdapter.notifyDataSetChanged();
                     
                    cursor.close();
                    mHelper.close();
                     
                }
            });
            alert.show();
             
        }
    }
     
    class MyListAdapter extends BaseAdapter implements OnClickListener{
         
        Context context;
        int mylistLayout;
        ArrayList<MemoInfo> items;
         
        LayoutInflater inflater;
 
        public MyListAdapter(Context context, int mylistLayout,
                ArrayList<MemoInfo> items) {
            this.context = context;
            this.mylistLayout = mylistLayout;
            this.items = items;
 
            inflater = (LayoutInflater) context
                    .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        }
         
public Cursor getCursor() {
            // TODO Auto-generated method stub
            return null;
        }
 
        @Override
        public int getCount() {
            return items.size();
        }
         
        @Override
        public void notifyDataSetChanged() {
            // TODO Auto-generated method stub
            super.notifyDataSetChanged();
        }
         
        @Override
        public Object getItem(int position) {
            // TODO Auto-generated method stub
            return items.get(position);
        }
 
        @Override
        public long getItemId(int position) {
            // TODO Auto-generated method stub
            return position;
        }
 
        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            if (convertView == null) {
//              Log.d("MyListView", "layout�쓣 �쟾媛쒖떆�궡.....");
                convertView = inflater.inflate(mylistLayout, parent, false);
            }
             
            MemoInfo memoInfo = items.get(position);
             
            TextView numberView =  (TextView) convertView.findViewById(R.id.numberView);
            numberView.setText(String.valueOf(count));
             
            TextView memoView= (TextView) convertView.findViewById(R.id.memoView);
            memoView.setText(memoInfo.dbMemo);
             
            Button delButton = (Button) convertView.findViewById(R.id.delBtn);
            Button editButton = (Button) convertView.findViewById(R.id.editBtn);
             
            delButton.setOnClickListener(this);
            editButton.setOnClickListener(this);
             
            return convertView;
        }
 
        @Override
        public void onClick(View v) {
            switch(v.getId()){
            case R.id.delBtn :
                new AlertDialog.Builder(MainActivity.this).setTitle("삭제하시겠습니까?")
                        .setPositiveButton("삭제", new DialogInterface.OnClickListener() {
                             
                            @Override
                            public void onClick(DialogInterface dialog, int which) {
                                SQLiteDatabase db = mHelper.getWritableDatabase();
                                 
                                MemoInfo info = new MemoInfo(timeNumber, memo);
                                long id = info.dbId;
                                 
                                String sql = "DELETE FROM memolist WHERE time ="    + id;
                                db.execSQL(sql);
                                 
                                Log.e("sqlsqlsql", ""+id);
                                 
                                Intent dbintent = new Intent(MainActivity.this, MainActivity.class);
                                dbintent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
                                startActivity(dbintent);
                                db.close();
                            }
                        }).setNegativeButton("취소", null).show();
                 
            case R.id.editBtn :
                 
            }
             
        }
         
    }
     
     
    class MemoInfo {
        long dbId;
        String dbMemo;
 
        MemoInfo(long dbId, String dbText) {
            this.dbId = dbId;
            this.dbMemo = dbText;
        }
    
}
 
class WordDBHelper extends SQLiteOpenHelper {
 
    public WordDBHelper(Context context, String name, CursorFactory factory,
            int version) {
        super(context, name, factory, version);
        // TODO Auto-generated constructor stub
    }
 
    @Override
    public void onCreate(SQLiteDatabase db) {
        String sql = "create table memolist("
                                            +"time integer PRIMARY KEY, "
                                            +"number integer, "
                                            +"memo varchar);";
         
        Log.e("eeeeeeeeeeeee", "aaaaaaaaaaaaaaaaaaaaaaaaaaaaa");
        db.execSQL(sql);
    }
 
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        String sql = "drop table if exists memolist";
        db.execSQL(sql);
         
        onCreate(db);
    }
 
}

이것저것 구글링하면서 다해봤는데 갱신이 안되네요 ㅠㅠㅠㅠㅠㅠㅠㅠ

익명사용자 님이 2014년 8월 26일 질문

1개의 답변

0 추천
 
채택된 답변
myAdapter = new MyListAdapter(MainActivity.this, R.layout.list, items);
                     
myAdapter.notifyDataSetChanged();
 
에서 윗줄을 지우세요
 
새로 생성된 어댑터에 리스트뷰랑 연결을 안시켰으니 갱신이 안되죠
 
그리고 어댑터는 매번 생성할 필요가 없습니다.
alkyne (22,960 포인트) 님이 2014년 8월 26일 답변
감사합니다..ㅠㅠㅠㅠ
흐규흐규..해결완료
...