내 목록보기를 자신의 어댑터를 사용하여 Android (내 어댑터 사용) 에 채우려고합니다. 일부 데이터는 웹 사이트에서 일부 XML 콘텐츠를 가져 오는 스레드에 의해 반환됩니다. 제대로 작동합니다!목록 결과를 스레드 결과 (ArrayList)로 채 웁니다.
목록보기가 반환 된 Array List 개체로 올바르게 채워집니다.
//.. function name blabla
ll_wait.setVisibility(View.VISIBLE); // A List View object displaying 'please wait'
lv1=(ListView)findViewById(R.id.listView1);
TextView tv1 = (TextView)findViewById(R.id.tv_Status);
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
String sortierung = prefs.getString("pref_sortierung", "Entfernung");
String distanz = prefs.getString("pref_distance", "10");
refreshElements refresh = new refreshElements(lat, lon, sortierung, distanz); // its a thread
refresh.start();
while(refresh.isAlive()) {
// HERE IS MY PROBLEM
// HERE IS MY PROBLEM
// HERE IS MY PROBLEM
// HERE IS MY PROBLEM
}
try {
// assigning some data, works correctly
column_names = refresh.getElementColumn(1);
// assigning some data, works correctly
EfficientAdapter adapter = new EfficientAdapter(getApplicationContext());
lv1.setAdapter(adapter);
} catch (Exception e) {
Toast.makeText(getApplicationContext(), e.getMessage() + e.getLocalizedMessage() + e.hashCode() + e.getCause() + e.toString(), Toast.LENGTH_SHORT).show();
}
dialog.dismiss();
ll_wait.setVisibility(View.GONE);
// -... end of function
당신이 볼 수 있듯이, 내 코드에서, "여기 내 문제입니다"라는 코멘트가 : 내가 그것을 할 방법을 이잖아. 물론 주 스레드가 대기합니다 (while() {...}) 결과로 새로 고침 스레드가 더 이상 살아 있지 않아 이 완료되어 완료되었습니다. 그리고 thats 요점! 작업 도중 내 전체 스레드가 정지 중입니다! 두 번째, 별도의 스레드로 listView 어댑터 물건을 이동하려고했습니다 ...하지만 목록보기 어댑터가 주 스레드에서 설정할 수 있다고 말한다. 동결 후 (때로는 응용 프로그램이 충돌 ... timeout i dunno) 데이터가 내 자신의 EfficientAdapter에서 사용 된 일부 통계에 할당됩니다.
스레드 A (새로 고침 스레드)의 데이터를 기다리고 반환 된 배열 목록을 전체 응용 프로그램을 고정하지 않고 목록보기 내용으로 사용할 수 있습니까?
나는 독일에서 왔고 나의 영어가 완벽하지 않기 때문에 당신이 요점을 얻길 바랍니다.