Android RecyclerView不会出现在EditText下面

Android RecyclerView不会出现在EditText下面,android,android-recyclerview,Android,Android Recyclerview,我有一个布局,它有一个EditText,当用户键入时,它应该在下面显示建议。我通过编程创建了一个RecyclerView,它应该在EditText下面显示建议项。但是当用户键入EditText时,它不显示RecyclerView。它应该看起来像下面包含的屏幕截图: Java代码: MainActivity.java: editText.addTextChangedListener(new TextWatcher() { @Override pub

我有一个布局,它有一个EditText,当用户键入时,它应该在下面显示建议。我通过编程创建了一个RecyclerView,它应该在EditText下面显示建议项。但是当用户键入EditText时,它不显示RecyclerView。它应该看起来像下面包含的屏幕截图:

Java代码: MainActivity.java:

editText.addTextChangedListener(new TextWatcher() {
            @Override
            public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {

        }

        @Override
        public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
          if(charSequence.toString().equals("Taxi")){
         RelativeLayout.LayoutParams layoutParams1=new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,ViewGroup.LayoutParams.WRAP_CONTENT);
              layoutParams1.setMargins(20,0,20,0);
              RecyclerView recyclerView=new RecyclerView(getContext());
              recyclerView.setAdapter(new CustomListAdapter());
              layoutParams1.addRule(RelativeLayout.BELOW,R.id.srch_qry);
              recyclerView.setLayoutParams(layoutParams1);

          }
        }

        @Override
        public void afterTextChanged(Editable editable) {

        }
    });
 public class CustomListAdapter extends RecyclerView.Adapter<CustomListAdapter.Holder> {
        public String[] taxi_list={"Audi","Tavera","Chevrolet"};
        @Override
        public Holder onCreateViewHolder(ViewGroup parent, int viewType) {
            View view=LayoutInflater.from(parent.getContext()).inflate(R.layout.cstm_lst_lyt,parent,false);
            return new Holder(view);
        }

        @Override
        public void onBindViewHolder(Holder holder, int position) {
        holder.taxi_text.setText(taxi_list[position]);
        }

        @Override
        public int getItemCount() {
            return taxi_list.length;
        }

        public class Holder extends RecyclerView.ViewHolder{
             TextView taxi_text;
            public Holder(View itemView) {

                super(itemView);
                taxi_text=(TextView) itemView.findViewById(R.id.taxi_txt);
            }

        }
    }
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="#10000000"
    android:id="@+id/lyt">
<TextView
    android:layout_width="match_parent"
    android:layout_height="40dp"
    android:id="@+id/taxi_txt"
    android:textSize="20sp"
    android:text="Audi"
    android:paddingLeft="10dp"
    android:gravity="center|start"/>
</RelativeLayout>
CustomListAdapter.java:

editText.addTextChangedListener(new TextWatcher() {
            @Override
            public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {

        }

        @Override
        public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
          if(charSequence.toString().equals("Taxi")){
         RelativeLayout.LayoutParams layoutParams1=new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,ViewGroup.LayoutParams.WRAP_CONTENT);
              layoutParams1.setMargins(20,0,20,0);
              RecyclerView recyclerView=new RecyclerView(getContext());
              recyclerView.setAdapter(new CustomListAdapter());
              layoutParams1.addRule(RelativeLayout.BELOW,R.id.srch_qry);
              recyclerView.setLayoutParams(layoutParams1);

          }
        }

        @Override
        public void afterTextChanged(Editable editable) {

        }
    });
 public class CustomListAdapter extends RecyclerView.Adapter<CustomListAdapter.Holder> {
        public String[] taxi_list={"Audi","Tavera","Chevrolet"};
        @Override
        public Holder onCreateViewHolder(ViewGroup parent, int viewType) {
            View view=LayoutInflater.from(parent.getContext()).inflate(R.layout.cstm_lst_lyt,parent,false);
            return new Holder(view);
        }

        @Override
        public void onBindViewHolder(Holder holder, int position) {
        holder.taxi_text.setText(taxi_list[position]);
        }

        @Override
        public int getItemCount() {
            return taxi_list.length;
        }

        public class Holder extends RecyclerView.ViewHolder{
             TextView taxi_text;
            public Holder(View itemView) {

                super(itemView);
                taxi_text=(TextView) itemView.findViewById(R.id.taxi_txt);
            }

        }
    }
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="#10000000"
    android:id="@+id/lyt">
<TextView
    android:layout_width="match_parent"
    android:layout_height="40dp"
    android:id="@+id/taxi_txt"
    android:textSize="20sp"
    android:text="Audi"
    android:paddingLeft="10dp"
    android:gravity="center|start"/>
</RelativeLayout>
公共类CustomListAdapter扩展了RecyclerView.Adapter{ 公共字符串[]出租车列表={“奥迪”、“塔维拉”、“雪佛兰”}; @凌驾 public Holder onCreateViewHolder(视图组父级,int-viewType){ View-View=LayoutInflater.from(parent.getContext()).flate(R.layout.cstm\u lst\u lyt,parent,false); 返回新的持有者(视图); } @凌驾 公共无效onBindViewHolder(Holder Holder,内部位置){ holder.taxi_text.setText(滑行列表[位置]); } @凌驾 public int getItemCount(){ 返回出租车列表长度; } 公共类持有者扩展了RecyclerView.ViewHolder{ text查看出租车信息; 公共持有人(查看项目视图){ 超级(项目视图); taxi_text=(TextView)itemView.findViewById(R.id.taxi_txt); } } } cstm\u lst\u lyt.xml:

editText.addTextChangedListener(new TextWatcher() {
            @Override
            public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {

        }

        @Override
        public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
          if(charSequence.toString().equals("Taxi")){
         RelativeLayout.LayoutParams layoutParams1=new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,ViewGroup.LayoutParams.WRAP_CONTENT);
              layoutParams1.setMargins(20,0,20,0);
              RecyclerView recyclerView=new RecyclerView(getContext());
              recyclerView.setAdapter(new CustomListAdapter());
              layoutParams1.addRule(RelativeLayout.BELOW,R.id.srch_qry);
              recyclerView.setLayoutParams(layoutParams1);

          }
        }

        @Override
        public void afterTextChanged(Editable editable) {

        }
    });
 public class CustomListAdapter extends RecyclerView.Adapter<CustomListAdapter.Holder> {
        public String[] taxi_list={"Audi","Tavera","Chevrolet"};
        @Override
        public Holder onCreateViewHolder(ViewGroup parent, int viewType) {
            View view=LayoutInflater.from(parent.getContext()).inflate(R.layout.cstm_lst_lyt,parent,false);
            return new Holder(view);
        }

        @Override
        public void onBindViewHolder(Holder holder, int position) {
        holder.taxi_text.setText(taxi_list[position]);
        }

        @Override
        public int getItemCount() {
            return taxi_list.length;
        }

        public class Holder extends RecyclerView.ViewHolder{
             TextView taxi_text;
            public Holder(View itemView) {

                super(itemView);
                taxi_text=(TextView) itemView.findViewById(R.id.taxi_txt);
            }

        }
    }
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="#10000000"
    android:id="@+id/lyt">
<TextView
    android:layout_width="match_parent"
    android:layout_height="40dp"
    android:id="@+id/taxi_txt"
    android:textSize="20sp"
    android:text="Audi"
    android:paddingLeft="10dp"
    android:gravity="center|start"/>
</RelativeLayout>

onTextChanged()
方法中,您创建了
RecyclerView
,但没有通过
addView()
将其附加到布局。你应该考虑在XML布局中直接添加你的<代码> CurryReVIEW ,而不是以编程方式。然后在方法
onTextChanged()
中更改其可见性并通知其适配器


编辑

下面是一个布局示例

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">

    <EditText
        android:id="@+id/edit_text"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

    <android.support.v7.widget.RecyclerView
        android:id="@+id/content"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_below="@id/edit_text"/>

    <android.support.v7.widget.RecyclerView
        android:id="@+id/text_suggestions"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@id/edit_text"/>


首先,您必须为
recyclerView
设置布局管理器。选中此项:

recyclerView.setLayoutManager(new LinearLayoutManager(getContext()))
然后将
RecyclerView
添加到您的
RelativeLayout

RelativeLayout myRelative = (RelativeLayout )findViewById(R.id.lyt);
myRelative.addView(recyclerView);

我不知道你为什么要浪费时间在创建自己的adpter上,不需要所有这些,只需使用

AutoCompleteTextViewandroid视图

 String[] fruits = {"Apple", "Banana", "Cherry", "Date", "Grape", "Kiwi", "Mango", "Pear"};
    //Creating the instance of ArrayAdapter containing list of fruit names
            ArrayAdapter<String> adapter = new ArrayAdapter<String>
                    (this, android.R.layout.select_dialog_item, fruits);
            //Getting the instance of AutoCompleteTextView
            AutoCompleteTextView actv = (AutoCompleteTextView) findViewById(R.id.autoCompleteTextView);
            actv.setThreshold(1);//will start working from first character
            actv.setAdapter(adapter);//setting the adapter data into the AutoCompleteTextView
            actv.setTextColor(Color.RED);
String[]水果={“苹果”、“香蕉”、“樱桃”、“枣”、“葡萄”、“猕猴桃”、“芒果”、“梨”};
//创建包含水果名称列表的ArrayAdapter实例
ArrayAdapter适配器=新的ArrayAdapter
(这是android.R.layout.select_对话框_项,fruits);
//获取AutoCompleteTextView的实例
AutoCompleteTextView actv=(AutoCompleteTextView)findViewById(R.id.AutoCompleteTextView);
动作设定阈值(1)//将从第一个字符开始工作
actv.setAdapter(适配器)//将适配器数据设置到AutoCompleteTextView中
actv.setTextColor(颜色为红色);
如何使用它-

安卓代码- 最佳例子-


聪明点,兄弟

你在找像autocompletetextview这样的东西吗?使用
autocompletetextview
来实现这种方法,不需要创建
RecyclerView
。但是autocompletetextview会显示与视图中键入的字符相似的项目,但在这里,当我键入Taxi时,Taxi的名称必须显示在下面,但正如您在上面的屏幕截图中所看到的,在EditText下面还有另一个列表您可以在EditText下面有多个布局。查看我的编辑。我为recyclerview设置了布局管理器,但它仍然没有显示您是如何将recycler添加到视图的?我想你忘了给你的亲戚添加回收器了@autocompletetextview中的Job显示的字符串与在其中键入的字符串相似