BLOG main image
분류 전체보기 (14)
Layout (1)
Network (3)
Reference (0)
Fundamentals (4)
System Controll (1)
DataBase (0)
Error Handle (2)
Book Review (1)
Debug (1)
Project (1)
free
free
clash of clans hack link
clash of clans hack link
descargar blackmart
descargar blackmart
hay day
hay day
promedia.ba
promedia.ba
rss
2010. 8. 28. 01:07

이번에는 ListView에 아이템을 추가하고 저절로 갱신할 수 있는 방법을 알아보도록 하겠습니다.

해결책

ArrayAdapter의 add 메서드를 통해 아이템을 추가하고, notifyDataSetChanged() 메서드를 호출합니다.

토의

이번 예제는 버튼을 클릭하면 사용자 입력값을 ListView에 추가해보는 예제입니다.

먼저 ListView를 간단히 만들어 보도록 하겠습니다. 그러기 위해서 res/layout/main.xml 을 아래와 같이 입력하였습니다.

레이아웃은 ListView와 다이얼로그를 생성할 버튼 하나로 간단히 구성하였습니다. 이제 메인 Activity 소스 코드를 보도록 하겠습니다.

public class ListViewEx extends Activity implements OnClickListener {
	
	private ArrayAdapter<string> _arrAdapter ;
	
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        settingListView() ;
        buttonHandle() ;
        
    }

	private void settingListView() {
		_arrAdapter = new ArrayAdapter<string>( getApplicationContext(), android.R.layout.simple_list_item_1 ) ;
		ListView listView = (ListView) findViewById( R.id.listView ) ;
		listView.setAdapter( _arrAdapter ) ;
	}

	private void buttonHandle() {
		Button addItemBtn = (Button) findViewById( R.id.addBtn ) ;
		addItemBtn.setOnClickListener( this ) ;
	}

	@Override
	public void onClick(View v) {
		EditText editText = (EditText) findViewById( R.id.editField ) ;
		String inputValue = editText.getText().toString() ;
		refresh( inputValue ) ;
	}
	
	private void refresh( String $inputValue ) {
		_arrAdapter.add( $inputValue ) ;
		_arrAdapter.notifyDataSetChanged() ;
	}
}

위 코드에서 ListView 갱신에 관련해서 주의 깊게 봐야 메서드는 refresh() 입니다. 다이얼로그로부터 받아온 사용자 입력값을 ArrayAdapter에 add를 한 다음에 변경사항을 체크하라는 notifyDataSetChanged() 메서드를 호출하였습니다.

이렇게 해주면 ListView는 갱신되어서 사용자 입력 아이템 항목이 추가됩니다

결과

안드로이드 ListView 갱신 결과

관련 예제

커스텀 다이얼로그 예제

'Layout' 카테고리의 다른 글

안드로이드 ListView 갱신하기  (3) 2010.08.28
GreenySun | 2010.12.03 18:12 | PERMALINK | EDIT/DEL | REPLY
DB를 이용하여 데이터를 추가하고 삭제하는 예제를 작성중인 학생입니다.
CursorAdapter를 이용하여 위와 같은 소스를 작성하고 실습해보니 notifyDataSetChanged()
메소드에서 프로그램이 강제종료됩니다.
구글링 지식인 다 뒤지고 소스를 수십차례 수정해봤으나 DB상에서는 데이터가 추가되고 지워지기까지 해도
화면은 변하지 않고 프로그램이 강제종료되네요..
위와같은 소스를 몇몇분들이 화면 갱신 된다고 올려두셨는데 저만 안되나 봅니다.
CursorAdapter라서 안되는 건지 아니면 DB는 원래 안되는건지 아니면 정말 제가 안되는 놈인건지..
소스의 일부만 보고는 알 수가 없어 질문 올려봅니다.
상세한 조언좀 부탁드립니다. 제 메일 주소 greenysun@nate.com 입니다 꼭좀 부탁드립니다
studdddy | 2011.05.19 13:04 | PERMALINK | EDIT/DEL | REPLY
위에 있는 소스를 보고 안드로이드 2.1에서 만들어보았는데요. 3군데에서 에러가 뜨네요.
1.
addItemBtn.setOnClickListener(this);
->>The method setOnClickListener(View.OnClickListener) in the type View is not applicable for the arguments (refreshts1)
이라고 하고요.

2.
public void onClick(View v){

-->>>The method onClick(View) of type refreshts1 must override a superclass method 이라고 하네요.

3.
_arrAdapter.add($inputValue);
->>>The method add(R.string) in the type ArrayAdapter<R.string> is not applicable for the arguments (String) 이라고 하는데.. 이유를 모르겠어요.'
BlogIcon jaket gaul | 2012.11.28 18:46 | PERMALINK | EDIT/DEL | REPLY
관리자의 승인을 기다리고 있는 댓글입니다
Name
Password
Homepage
Secret