2014-07-04 1 views
2

안녕하세요,이 특정 시나리오를 구현하는 것에 대해 잘 모르겠습니다. 이에 대한 제안이 필요합니다. 나는 listview가 있고 그것을 서버의 전화를하여 업데이트 할 것입니다, 그것은 데이터의 작은 양의 경우 신속하게 될 것입니다, 내가 5000 레코드가 있다면? 내가 그들을 메모리 또는 데이터베이스에로드하고 쿼리하고 목록보기를 업데이 트해야합니까? 이것에 대한 가장 좋은 방법은 무엇입니까?Android : 네트워크 연결 및리스트 뷰 처리

데이터를 다운로드 할 때 갑자기 네트워크가 끊어지는 것을 상상해보십시오. 그렇다면 데이터를 처리하고 listview를 업데이트하는 방법은 무엇입니까?

답변

1

나는 5K 기록에 대해 잘 모르겠지만,의 ListView는 효과적인 재활용 메커니즘을 사용하여 기록 잘 심지어 많은 수를 처리하는 것으로 알려져있다. 자세한 설명은 this thread을 참조하십시오.

이제 네트워크 리소스 로딩에 Volley을 사용하십시오. 비동기로 레코드를 목록에로드하는 것이 훨씬 더 나은 작업입니다. 어떤 경우 든 사용하는 라이브러리 나 자신의 코드가 백그라운드 스레드에서 리소스로드/네트워킹을 수행해야합니다.

또한 코드에 ViewHolder pattern을 적용해야합니다. ViewHolder 사용 은 항상 후드 아이디어입니다. 정말 많은 수의 레코드가 중요해진다. 그것을 사용하십시오. 당신이 정말 로드 더 기능과 함께 부분적인 로딩을 필요로하는 경우
그것은, 마지막으로,이

class ViewHolder { 
    textView text1; 
    Button button1; 
} 

class MyAdapter { 
    public View getView(int position, View convertView, ViewGroup parent) { 
     ViewHolder viewHolder = null; 
     if (convertView==null){ 
       LayoutInflater inflater = ((Activity) mContext).getLayoutInflater(); 
       convertView = inflater.inflate(layoutResourceId, parent, false); 
       viewHolder = new ViewHolderItem(); 
       viewHolder.text1 = (TextView) convertView.findViewById(R.id.text1); 
       viewHolder.button1 = (Button) convertView.findViewById(R.id.button1); 
       .......... 
       convertView.setTag(viewHolder); 
     } 
     viewHolder = (ViewHolderItem) convertView.getTag(); 
     ObjectItem objectItem = data[position]; 
     .......... 
    } 
} 


같이해야하고, 읽어 보시기 바랍니다 : http://www.androidhive.info/2012/03/android-listview-with-load-more-button/


0

모든 레코드를 가져올 필요가없는 레코드가있는 경우 모든 레코드를 보내지 않도록 서버의 쿼리를 제한해야합니다.

그런 다음 "필요할 때 추가 표시"를 구현하여 필요할 때 서버에서 더 많은 데이터를 가져올 수 있습니다.

Example load more

+0

먼저 데이터베이스에로드 한 다음 listview를 업데이트해야합니까? – teekib

+0

20 개의 레코드로 목록 뷰를 업데이트하고 네트워크가 갑자기 떨어지는 경우이 시나리오를 어떻게 처리해야합니까? – teekib

+0

그리고 더 많은 버튼이나 페이지 매김을 사용하지 않으려면 어떻게해야합니까? – teekib

관련 문제