0

문제에 어려움을 겪고 있고이 상황에 대한 거의 모든 항목을 읽었지만 제 경우에 적절한 해결책을 찾을 수 없었습니다. 모든 제안에 감사드립니다. 제 경우에는 테스트 응용 프로그램을 만들고 ListView에 결과의 요약을 가져 오는 것보다 결과를 데이터베이스에 쓰려고합니다. 글로벌 변수로 빈 목록에 첫 번째 은 내가 빈리스트와 어댑터를 시작 onCreateView 내에서보다 ArrayList에에게arrayAdapter.add가 이전 객체를 유지하지 않습니다.

ArrayList<Results> updatedList = new ArrayList<>(); 

을 시작합니다. 정규 CustomAdapter가 있습니다.

ProfileArrayAdapter arrayAdapter = new ProfileArrayAdapter (getContext(), 0, updatedList));

그리고 다른 방법으로 새 ​​데이터로 개체를 업데이트하고 arrayAdapter에 추가했지만 불행히도 가능한 모든 방법을 시도했지만 마지막 값만 어댑터에 추가되고 이전 값은 삭제됩니다. 나는 심지어 notifyDataSetChanged를 사용한다. 아마도 for 루프가 해결책이 될 수 있지만 항목 수가 늘어 나면 문제가됩니다. 이 문제에 대한 조언을 좀주세요.

Results aResults = new Results (testIdString, testTypeString, numberOfCorrectAnswers, numberOfFalseAnswers, numberOfEmptyAnswers); 
    arrayAdapter.add(aResults); 
    arrayAdapter.notifyDataSetChanged(); 

편집 : 문제 : 목록이 새로 고쳐지는 fragmentPager에 대해 TabAdapter에서 조각을 호출 할 때마다 문제가 발생했습니다. Tabadapter에서 새 StatisticalFragment를

으로 변경했습니다.

StatisticsFragment stat = StatisticsFragment.updatedList);

FragmentActivity보다 putParcelableArrayList를 사용하여 배열을 새로운 조각으로 전송했습니다. 이 작업을 수행하기 위해 필자는 결과 클래스에 Parcelable 클래스를 구현했습니다. 이 솔루션이 다른 사람에게 도움이되기를 바랍니다.

답변

0

SLM 오메르 Kardes,

당신은 글로벌 ArrayList updatedList에 먼저 새 객체 Result aResult을 추가해야합니다. 이 번호를 추가 한 후 arrayAdapter.notifyDataSetChanged();으로 전화하십시오.

은 좀 다음과 같아야합니다

ArrayList<Results> updatedList = new ArrayList<>(); 
ProfileArrayAdapter arrayAdapter; 
... 

public View onCreateView(...){ 
    arrayAdapter = new ProfileArrayAdapter(getContext(), 0, updatedList); 
    ... 
} 

public void updateList (Result newResult){ 
    updatedList.add(newResult); 
    arrayAdapter.notifyDataSetChanged(); 
} 
+0

답변을 주셔서 감사합니다, 그러나 다시 같은 문제가, 지금까지의 내가 이해, 활동을 시작하는 시간에, 대신은을 생성 ArrayList에 새로운 데이터를 추가하는 새로운 ArrayList를 작성해, 그리스트에 새로운 데이터를 추가합니다. 따라서 새로운 행이 생성되지 않습니다. –

+0

ProfileArrayAdapter를 pls와 (과) 공유 할 수 있습니까? –

+0

추가 된 어댑터를 찾으십시오. –