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

리스트뷰 갱신 notifyDataSetChanged() 사용법 질문드립니다.

0 추천

X, Y는 현재의 위도, 경도인데,

장치에서 받아오는 속도가 느려

처음에는 0,0이며, 몇 초후에 X,Y값이 제대로 받아집니다.

그래서

notifyDataSetChanged() 를 사용하여

데이터가 바뀔때(X, Y값이 제대로 들어왔을 때)

새로 거리를 계산한 값이 출력되도게 하고자 합니다.

그런데, 아래와 같이 하니 빈 리스트만 출력이됩니다.

도움 부탁드립니다.

    ArrayList<HashMap<String, Object>> originalValues;
    
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		
		final ListView insurListView = (ListView) findViewById(android.R.id.list);		
		inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);

		String names[] = { 
				"Tom",
				"Jane",
				"Mary",
				};
		
		Double lati[] = { 
				35.000001,
				26.000001,
				67.000001,
				};	
		
		Double longi[] = { 
				129.000001,
				159.000001,
				100.000001,
				};			

        
		originalValues = new ArrayList<HashMap<String, Object>>();

		HashMap<String, Object> temp;

		if (x==0){
			originalValues.clear();
				}
		else{
			int oriname = names.length;
			for (int i = 0; i < oriname; i++) {
				temp = new HashMap<String, Object>();

				temp.put("name",	names[i]);
				temp.put("lati",	lati[i]);
				temp.put("longi",	longi[i]);
			
				temp.put("dis",		Math.round(Math.round(6371000.0 * Math.acos(Math.sin(Math.PI/180 * lati[i]) * Math.sin(Math.PI/180 * Double.valueOf(x))
		+ Math.cos(Math.PI/180 * lati[i]) * Math.cos(Math.PI/180 * Double.valueOf(x)) * Math.cos(Math.PI/180 * (longi[i] - Double.valueOf(y)
)))) / 1000));

			
				originalValues.add(temp);
			
			}
			adapter.notifyDataSetChanged();
		}
	
		adapter = new CustomAdapter(this,R.layout.tab01_consul_row, originalValues);
		insurListView.setAdapter(adapter);

 

동네영웅 (220 포인트) 님이 2014년 9월 22일 질문

1개의 답변

0 추천
선언도 안한 adapter에서 notify 를 때리고, 게다가 setAdapter는 제일 끝에하고...

분명 해결하는 방법은 쉬워보이는데, 엄두가 나지 않네요.

 

listview에 관한 예제를 더 찾아보세요...
쎄미 (162,410 포인트) 님이 2014년 9월 22일 답변
답변 감사드립니다.
오픈소스로 필요기능만 으로 조합하다보니 실력이 많이 모자랍니다..
다른 일하면서 중간중간 배우고 있지만, 쉽지가 않네요^^;
혹시, hushmap 을 썼을 경우, 데이터 변경될때 마다 리스트뷰 갱신되는 예제 혹시 얻을 수 없을까요?
db부분은 살펴볼 필요없고, custom adapter 부분을 잘 살펴보세요...
https://github.com/susemi99/TestDBListView
...