SearchView从RecyclerView添加错误的项目

时间:2018-07-04 07:08:10

标签: android android-recyclerview

实际上,我正在尝试在我的RecyclerView中添加一个SearchView,以便可以在其上搜索不同种类的项目,

但是当我在SearchView中搜索一个结果时遇到问题,当我单击它时就发现了该问题,或者所选项目是错误的,或者更好的是,它是来自主ArrayList的项目,而不是您搜索的结果可以在下面的gif中看到,我在按下Baybar时说我已经选择了Bayles,但我正在搜索Bayles,但是当我将其作为子项添加到另一个回收站时,它正在添加ABBONDANTE,而不是Bayles。

enter image description here

这是我的适配器的ViewHolder

<!DOCTYPE html>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<html>
<head>
    <meta charset="utf-8" />
    <link rel="shortcut icon" href="//#" />
     <script type="text/javascript" src="https://html2canvas.hertzen.com/dist/html2canvas.js"></script>
    <script type="text/javascript" src="https://html2canvas.hertzen.com/dist/html2canvas.min.js"></script>
</head>

<body>
    <div id="capture" style="padding: 10px; background: #f5da55">
        <h4 style="color: #000; ">Helloo world!</h4>
    </div>
    <div id="match-button" onclick="sendData();">capture</div>



    </body>
</html>

这是我来自Activity的onClickListener,我将项目添加到其他RecyclerView

itemView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if(listener != null){
                    int position = getAdapterPosition();
                    if(position != RecyclerView.NO_POSITION){
                        listener.onItemClick(position);
                        Snackbar.make(v,variantiConstructors.get(position).getDeskT(),Snackbar.LENGTH_SHORT).show();
                    }
                }
            }
        });

这是我的带有过滤器的适配器代码

   adapterVarianti.setOnItemClickListener(new AdapterVarianti.OnItemClickListener() {
            @Override
            public void onItemClick(int position) {

                search.clearFocus();

                if (dummyDataItems.size() != 0) {

                    if (tipo.toString().equals("CON ") || tipo.toString().equals("PIU' ") || tipo.toString().equals("MENO ") || tipo.toString().equals("SENZA ")) {

// Here i'm adding the selected item to a String builder but i think it's here where i'm doing something wrong

                        tipo.append(filteredVariable.get(position).getDeskT());

// Adding item from the recyclerView where there is searchView to last item from the recyclerView on background.

                        ItemPTERM lastAdded = dummyDataItems.get(dummyDataItems.size() - 1);
                        lastAdded.setVariant(new Variant(tipo.toString()));

                        if (exampleAdapter.getItemCount() > 0) {
                            mRecyclerViewTOP.scrollToPosition(exampleAdapter.getItemCount() - 1);
                        }
                        exampleAdapter.notifyDataSetChanged();

                        tipo = new StringBuilder();

                        if(segmentedButtonGroup.getPosition() == 0){
                            tipo = new StringBuilder();
                            tipo.append("CON ");
                        }
                        if(segmentedButtonGroup.getPosition() == 1){
                            tipo = new StringBuilder();
                            tipo.append("PIU' ");
                        }
                        if(segmentedButtonGroup.getPosition() == 2){
                            tipo = new StringBuilder();
                            tipo.append("MENO ");
                        }
                        if(segmentedButtonGroup.getPosition() == 3){
                            tipo = new StringBuilder();
                            tipo.append("SENZA ");
                        }

                    }
                }
            }
        });

1 个答案:

答案 0 :(得分:0)

通过使用以下代码将列表再次传递给“活动”来解决:

public ArrayList<VariantiConstructor> getList(){
    return variantiConstructors;
}

然后在活动代码中:

 tipo.append(adapterVarianti.getList().get(position).getDeskT());
相关问题