2014-08-27 4 views
0

안드로이드 프로젝트에서 페이지 매김을 사용하려고합니다. 목록보기에서 한 번에 10 개씩 표시하고 싶은 데이터가 60 개 있습니다. 그러나 문제는 목록에 중복이 있습니다. 처음 10 즉 하중은, 다시 같은 10 준수 :android에서 페이지 매김 작업

코드 :

public class VideoActivity extends Activity { 
    private ConnectionDetector cd; 
    public HttpResponse video_respons; 
    public String video_string_response1; 
    public ArrayList<NameValuePair> nameValuePairs_Video; 
    ArrayList<Ice_data> ice_list; 
    String URL="http://footballultimate.com/icebucket/index.php/api/getVideo"; 
    String URL1="http://footballultimate.com/icebucket/index.php/api/getVideoByLimit"; 
    JSONObject jsonobj; 
    JSONArray jsonarr; 
    Ice_data iceobj; 
    CustomIceAdapter ciadp; 
    ListView list; 
    int start = 1; 
    int limit = 10; 
    boolean loadingMore = false; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_video); 
     ice_list=new ArrayList<Ice_data>(); 
     // GEt all Data for Video 
     cd = new ConnectionDetector(VideoActivity.this); 
     Config.isInternetPresent = cd.isConnectingToInternet(); 
     if (!Config.isInternetPresent) { 

      AlertDialog.Builder builder = new AlertDialog.Builder(VideoActivity.this); 
      // Shuld be fail icon 
      builder.setIcon(R.drawable.ic_launcher); 
      builder.setMessage("Connection Not Available !" + "\n" 
        + "Please enable your Internet Connection"); 
      builder.setTitle("INTERNET CONNECTION"); 
      builder.setPositiveButton("Ok", 
        new DialogInterface.OnClickListener() { 
       @Override 
       public void onClick(DialogInterface dialog, int which) { 
        // TODO Auto-generated method stub 
        dialog.cancel(); 
       } 
      }); 
      AlertDialog alert = builder.create(); 
      alert.show(); 
     } else { 
      new GetVideos().execute(); 
     } 
     // Get all Data for Video 
     list= (ListView) findViewById(R.id.videoList); 
     list.setOnScrollListener(new OnScrollListener() { 

      @Override 
      public void onScrollStateChanged(AbsListView arg0, int arg1) { 
       // TODO Auto-generated method stub 

      } 

      @Override 
      public void onScroll(AbsListView arg0, int firstVisibleItem, int visibleItemCount, int totalItemCount) { 
       int lastInScreen = firstVisibleItem + visibleItemCount; 
        if((lastInScreen == totalItemCount) && !(loadingMore)){  

         new GetVideos().execute(); 
        } 

      } 
     }); 
    } 

    class GetVideos extends AsyncTask<String, String, String> { 
     private ProgressDialog pDialog; 
     private HttpResponse vip_respons; 

     protected void onPreExecute() { 
      super.onPreExecute(); 

      pDialog = new ProgressDialog(VideoActivity.this); 
      pDialog.setTitle("Processing..."); 
      pDialog.setMessage("Please wait..."); 
      pDialog.setCancelable(false); 
      pDialog.show(); 
     } 

     @Override 
     protected String doInBackground(String... arg0) { 
      loadingMore = true; 
      // TODO Auto-generated method stub 
      try { 

       HttpClient httpclient = new DefaultHttpClient(); 
       HttpPost httppost = new HttpPost(URL1); 
       List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2); 
       nameValuePairs.add(new BasicNameValuePair("start",String.valueOf(start))); 
       nameValuePairs.add(new BasicNameValuePair("limit",String.valueOf(limit))); 
       httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); 
       video_respons = httpclient.execute(httppost); 
       //video_string_response1 = getResponseBody(video_respons); 
       video_string_response1=responsetostring.getResponseBody(video_respons); 
       //Log.d("Store_Response", the_string_response1); 

      } catch (Exception e) { 
       // TODO: handle exception 
       e.printStackTrace(); 
      } 
      return null; 
     } 
     protected void onPostExecute(String video_string) { 
      try{ 
        if(pDialog.isShowing()){ 
         pDialog.dismiss(); 
        } 
      } 
      catch(Exception e){ 
       e.printStackTrace(); 
      } 
      finally 
      { 
       pDialog.dismiss(); 
      } 
      if (video_string_response1!=null) { 
       //displayjsonstring(); 
       geticevalues(video_string_response1); 

      } 
     } 
    } 
    public void geticevalues(String result) 
    { 

     try { 
      jsonobj=new JSONObject(result); 
      //ice_list=new ArrayList<Ice_data>(); 
      jsonarr=jsonobj.getJSONArray("video_data"); 
      for(int i=0;i<jsonarr.length();i++) 
      { 
       JSONObject jso=jsonarr.getJSONObject(i); 
       iceobj=new Ice_data(); 
       iceobj.title=jso.getString("title"); 
       iceobj.image_URL=jso.getString("image"); 
       iceobj.video_URL=jso.getString("url"); 
       ice_list.add(iceobj); 
      } 
     } catch (JSONException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
     ciadp=new CustomIceAdapter(VideoActivity.this,ice_list); 
     ciadp.notifyDataSetChanged(); 
     loadingMore = false; 
     list.setAdapter(ciadp); 
     start+=10; 
    } 

시작 및 제한이 시작 각각의 제 요구 한 항목의 수를 표시하는 값입니다 또한 시작 값을 start+=10으로 초기화했습니다. 시작 및 제한 값을 async 클래스의 webservice에 전달합니다.

위의 코드를 수정하는 더 좋은 방법이 있습니까? 아니면 위의 코드를 수정할 수 있습니까? 도움 해주세요 !! doInBackground 내부 ice_list의

+0

새 데이터를 요청할 때 시작 값 및 반환 데이터가 있습니까? – calvinfly

답변

0

초기화가 중복

을 제거합니다

보호 문자열 doInBackground (문자열 ...는 arg0) { loadingMore = TRUE;

 ice_list=new ArrayList<Ice_data>(); 

     // TODO Auto-generated method stub 
     try {...................... 
+0

그게 문제를 해결하지 못했습니다. 당신이 webservice의 각 호출에 새로운 키워드를 말하면 그 안에있는 오래된 데이터는 삭제되지 않고리스트는 새로운 것으로 시작될 것입니다 ... – user3852672

+0

나는 그 일을 잘하고 있지 않습니다. 이 줄 ciadp = 새로운 CustomIceAdapter (VideoActivity.this, ice_list); 이 줄을 읽기 전에이 튜토리얼을 보면 http://androidadapiotatasetchanged.blogspot.in/ –