마스터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일 답변
감사합니다..ㅠㅠㅠㅠ
흐규흐규..해결완료
...