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