如何刷新来自安卓服务器的列表视图内容



>我的应用程序中有一个列表视图,其中包含来自服务器的响应内容,并在列表视图下方加载更多按钮。在onCreate中,我执行内容URL,当我再次执行内容URL列表视图时,它的工作原理是在onResume方法中使用相同的内容和Loadmore按钮获得双倍。我该如何解决这个问题。

这是我的代码:-

class CDealDataSent extends AsyncTask<String, Void, String> {
    public CDealAppDatastorage item;
    @Override
    protected void onPreExecute() {
        super.onPreExecute();
        m_ProgressView.setVisibility(View.VISIBLE);
    }
    @Override
    protected String doInBackground(String... urls) {
        return DealListing(urls[0]);// sending data to server...
    }
    // onPostExecute displays the results of the AsyncTask.
    @SuppressWarnings("deprecation")
    @SuppressLint("SetTextI18n")
    @Override
    protected void onPostExecute(final String result) {
        m_ProgressView.setVisibility(View.GONE);
        try {
            m_oResponseobject = new JSONObject(result);// getting response from server
            JSONArray posts = m_oResponseobject.optJSONArray("dealList");

            for (int i = 0; i < posts.length(); i++) {
                JSONObject post = posts.getJSONObject(i);
                item = new CDealAppDatastorage();
                item.setM_szHeaderText(post.getString("dealname"));
                item.setM_szsubHeaderText(post.getString("dealcode"));
                item.setM_szDealValue(post.getString("dealvalue"));
                item.setM_n_Image(m_n_FormImage[i]);
                s_oDataset.add(item);
            }
            // LoadMore button
            Button btnLoadMore = new Button(getActivity());
            btnLoadMore.setText("LOAD MORE DEALS");
            btnLoadMore.setBackgroundResource(R.drawable.button_boarder);
            btnLoadMore.setTextAppearance(getActivity(), android.R.style.TextAppearance_DeviceDefault_Small);
            btnLoadMore.setTextColor(Color.WHITE);
            btnLoadMore.setGravity(Gravity.CENTER);
            if (!s_oDataset.isEmpty()) {
                // Adding Load More button to lisview at bottom
                m_ListView.addFooterView(btnLoadMore);
                m_oAdapter = new CDealAppListingAdapter(getActivity(), s_oDataset);// create adapter object and add arraylist to adapter
                m_ListView.setAdapter(m_oAdapter);//adding adapter to recyclerview
                m_oAdapter.notifyDataSetChanged();
            } else {
                btnLoadMore.setVisibility(View.GONE);
            }

            btnLoadMore.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    m_n_DefaultRecordCount = m_n_DefaultRecordCount + 5;// increment of record count by 5 on next load data
                    m_n_DeafalutLastCount = m_n_DeafalutLastCount + 5;// same here.....as above
                    sz_RecordCount = String.valueOf(m_n_DefaultRecordCount);// convert int value to string
                    sz_LastCount = String.valueOf(m_n_DeafalutLastCount);// convert int value to string /////
                    new DealNext().execute(m_DealListingURL);// POST DATA TO SERVER TO LOAD MORE DATA......
                }
            });
            getResponse();
        } catch (JSONException e) {
            e.printStackTrace();
        }

    }
}

在做之前:

s_oDataset.add(item);

检查它是否已经具有此值:

if(!s_oDataset.contains(item)){
    s_oDataset.add(item);
}

您有 2 个解决方案:1.检查数据中是否存在该项目,不要添加它。

if(!s_oDataset.contains(item)){
s_oDataset.add(item);
}
  1. 在添加新数据之前删除所有数据。

    s_oDataset.removeAll();

最新更新