java - 每次我获取 pdf 文件时,我的 ArrayAdapter 堆栈

标签 java android android-arrayadapter

我需要有关每次单击按钮获取文件时如何刷新 ArrayAdapter 的帮助。它不断堆叠新列表而不清除最后一个。请帮忙,也不要介意我的英语。

这是我的阵列适配器

 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;
}

这是我从实时服务器获取文件的代码

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);
}

你能建议我该怎么做吗?或要添加或更改的代码 fragment ?

最佳答案

每次加载新数据时,您都会将新的 pdf 添加到同一个列表中。

解决这个问题,之前

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

pdfList.clear()

关于java - 每次我获取 pdf 文件时,我的 ArrayAdapter 堆栈,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45786882/

相关文章:

android - 网络操作和屏幕旋转

Android:带图像的 ListViews 的 Vogella 上下文操作模式

java - 如何解析此文件并捕获所有 'Data Gather' 文本?

java - 如何在 inOut 交换上 split() 之后一次仅发送 1 条消息

java - 来自另一个类的 Android Interface 类显示空指针异常

安卓 Lint : Kotlin Dispatchers unresolved reference but compilation working

java - 如何使用 MS Exchange 服务器发送电子邮件

java - 两个 Java 应用程序如何在 EC2 上的两个实例上进行通信?

android - startActivityForResult 使用 ArrayAdapter 将数据传递到 "toActivityResult"

java - ListView 中滚动时使用的重用项目?