php - 限制在回收 View 中显示的项目

标签 php android mysql

我在 fragment 中使用 recyclerview 来显示远程 MySQL 数据库中的项目。

目前数据库表有4个项目,但recyclerview不断重复这些项目。

我只想将这些项目显示一次。

这是一段代码:

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {

    View view = inflater.inflate(R.layout.fragment_addresses, container, false);


    //getData();



    recyclerView = (RecyclerView) view.findViewById(R.id.recyclerview);
    addresses = new ArrayList<>();
    getAddressesFromDB(0);

    gridLayout = new GridLayoutManager(getActivity(), 2);
    recyclerView.setLayoutManager(gridLayout);

    adapter = new AddressesAdapter(getActivity(), addresses);
    recyclerView.setAdapter(adapter);

    recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
        @Override
        public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
            Log.d("HOLA ADDRESSES", "NUM ADDRESSES: " + addresses.size());
            if (gridLayout.findLastCompletelyVisibleItemPosition() == addresses.size() - 1) {
                getAddressesFromDB(addresses.get(addresses.size() - 1).getId_address());
            }

        }
    });




    return view;
}
private void getAddressesFromDB(int id) {

    AsyncTask<Integer, Void, Void> asyncTask = new AsyncTask<Integer, Void, Void>() {
        @Override
        protected Void doInBackground(Integer... addressesIds) {

            OkHttpClient client = new OkHttpClient();
            Request request = new Request.Builder()
                    .url("http://xxxx/android_addresses_api/direcciones_todas.php?id=" + addressesIds[0])
                    .build();
            try {
                okhttp3.Response response = client.newCall(request).execute();

                JSONArray array = new JSONArray(response.body().string());

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

                    JSONObject object = array.getJSONObject(i);
                    Log.d("HOLA ADDRESSES", "DIRECCION LEIDA: " + i);
                    Address address = new Address(object.getInt("id_address"), object.getString("cia"),
                            object.getString("fn"), object.getString("ln"),
                            object.getString("ad1"),object.getString("ad2"),object.getString("type"),
                            object.getString("city"),object.getString("state"),object.getString("zip"),
                            object.getString("phone"),object.getString("ext"),object.getInt("fromto"),
                            object.getString("user"));

                    addresses.add(address);
                }


            } catch (IOException e) {
                e.printStackTrace();
            } catch (JSONException e) {
                e.printStackTrace();
            }
            return null;
        }

        @Override
        protected void onPostExecute(Void aVoid) {
            adapter.notifyDataSetChanged();
        }
    };

    asyncTask.execute(id);
}

这是 PHP 文件。

<?php 
    //Creating a connection
    $con = mysqli_connect("X","X","X","X");

    if (mysqli_connect_errno())
    {
       echo "Failed to connect to MySQL: " . mysqli_connect_error();
    }
    /*Get the id of the last visible item in the RecyclerView from the request and store it in a variable. For            the first request id will be zero.*/  
    $id = $_GET["id"];

    $sql= "Select * from tb_direcciones where id_address between ($id+1) and ($id+10)";

    $result = mysqli_query($con ,$sql);

    while ($row = mysqli_fetch_assoc($result)) {

        $array[] = $row;

    }
    header('Content-Type:Application/json');

    echo json_encode($array);

    mysqli_free_result($result);

    mysqli_close($con);

 ?>

最佳答案

您已经在调用它并填充 Recyclerview。不需要额外的代码。只需删除整个滚动监听器

关于php - 限制在回收 View 中显示的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44018674/

相关文章:

php - 在 Laravel 中按投票计数对帖子进行排序

android - Android 中的样式继承

android - 有没有办法在 drawable.xml 文件中定位某些 Api?

php - 忽略 php $variable $value 数组中的内容

PHP 错误 - 已定义常量 DB_HOST?

php - 是否有与 Rails 迁移等效的 PHP?

php - 加密用户数据自动登录第三方系统

java - 从 ANDROID 2.2 (HTC desire) 发送 UDP 包

mysql - 在mysql中创建一个日期范围

php - 为基于 PHP/MySQL 关键字的搜索分配多个关键字