2017-08-20 6 views
1

ファイルを取得するためにボタンをクリックするたびにArrayAdapterを更新する方法について助けが必要です。それは最後をクリアすることなく新しいリストを積み重ね続ける。助けてください、私の英語も気にしないでください。pdfファイルを取得するたびに、ArrayAdapterスタック

は、これはこれは私が私のライブサーバーからファイルを取得私のコード

private void getPdfs() { 
    progressDialog.setMessage("Fetching pdfs from server..."); 
    progressDialog.show(); 
    StringRequest stringRequest = new StringRequest(Request.Method.POST, PDF_FETCH_URL, 
      new Response.Listener<String>() { 
       @Override 
       public void onResponse(String response) { 
        progressDialog.dismiss(); 
        try { 
         JSONObject obj = new JSONObject(response); 
         Toast.makeText (Files.this,obj.getString("message"), Toast.LENGTH_SHORT).show(); 

         JSONArray jsonArray = obj.getJSONArray("pdfs"); 
         for(int i=0;i<jsonArray.length();i++){ 
          JSONObject jsonObject = jsonArray.getJSONObject(i); 
          Pdf pdf = new Pdf(); 
          String pdfName = jsonObject.getString("name"); 
          String pdfUrl = jsonObject.getString("url"); 
          pdf.setName(pdfName); 
          pdf.setUrl(pdfUrl); 
          pdfList.add(pdf); 
         } 

         pdfAdapter = new PdfAdapter(Files.this, R.layout.list_layout, pdfList); 
         listView.setAdapter(pdfAdapter); 
         pdfAdapter.notifyDataSetChanged(); 
        } catch (JSONException e) { 
         e.printStackTrace(); 
        } 
       } 
      }, 

      new Response.ErrorListener() { 
       @Override 
       public void onErrorResponse(VolleyError error) { 

       } 
      } 
    ); 

    RequestQueue request = Volley.newRequestQueue(this); 
    request.add(stringRequest); 
} 

である私のアレイアダプタ

public View getView(int position, View convertView, ViewGroup parent) { 
    View row = convertView; 
    PdfHolder holder = null; 
    if(row == null) 
    { 
     LayoutInflater inflater=LayoutInflater.from(activity); 
     row = inflater.inflate(layoutResourceId,parent,false); 
     holder = new PdfHolder(); 
     holder.textViewName = (TextView) row.findViewById(R.id.textViewName); 
     holder.textViewUrl = (TextView) row.findViewById(R.id.textViewUrl); 
     row.setTag(holder); 
    } 
    else 
    { 
     holder= (PdfHolder) row.getTag(); 
    } 

    pdf = data.get(position); 
    holder.textViewName.setText(pdf.getName()); 
    holder.textViewUrl.setText(pdf.getUrl()); 
    return row; 
} 


class PdfHolder 
{ 
    TextView textViewName,textViewUrl; 
} 

であるあなたは、私が何をすべき示唆することはできますか?追加または変更するコードスニペット?

+0

を行う前に、この問題を解決するには

あなたがインターネット上でデータをダウンロードしていますか?あなたがアプリをフリーズすると、メインスレッドでデータをダウンロードしている可能性があります。または、アダプターをどのように移植しますか?問題はコードのその部分にはありません。 – Yupi

+0

このコードでは問題は表示されません。どのようにアダプタをListViewに接続しますか?どのようにアダプターを実装しますか? – davidxxx

+0

@Yupiはいライブサーバーからファイルを取得しています –

答えて

2

新しいデータを読み込むたびに、同じリストに新しいpdfを追加しています。

for(int i=0;i<jsonArray.length();i++){ 

pdfList.clear() 
+0

ありがとう、それは働いた。 –

関連する問題