android-我无法隐藏listview berfore在editText中输入

时间:2017-05-04 18:16:29

标签: android listview search android-edittext

我有一个editText和listview可以正常工作。但是我希望在用户开始输入之前使listview不可见。 我查看了这些链接,但它没有用

Show/Hide the Custom ListView in android

Hiding Listview until search is initiated

Hide an android ListView until search string is entered

这是我的代码

  public class MapAcWithMarker extends FragmentActivity implements OnMapReadyCallback {

public ListView listView;
private View parentView;
public DataAdapter adapter;
ArrayList<Locations> arrayListTemp=new ArrayList<>();
EditText inputSearch;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main_recyc);
    // Obtain the SupportMapFragment and get notified when the map is ready to be used.
    SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
            .findFragmentById(R.id.map);
    mapFragment.getMapAsync(this);

    inputSearch = (EditText) findViewById(R.id.inputSearch);
    listView = (ListView) findViewById(R.id.listView);

    inputSearch.addTextChangedListener(new TextWatcher() {

        @Override
        public void onTextChanged(CharSequence cs, int arg1, int arg2, int arg3) {


            }
        }

        @Override
        public void beforeTextChanged(CharSequence arg0, int arg1, int arg2,
                                      int arg3) {
            if(listView.getVisibility() != View.INVISIBLE)
                listView.setVisibility(View.INVISIBLE);


        }



        @Override
        public void afterTextChanged(Editable arg0) {
           if(listView.getVisibility() != listView.VISIBLE)
               listView.setVisibility(listView.VISIBLE);

        }
    });

3 个答案:

答案 0 :(得分:1)

您可以在onCreate中隐藏ListView,而不是隐藏在beforeTextChangedonTextChangedafterTextChanged中,您可以取消隐藏它。

答案 1 :(得分:0)

尝试使用

listView.setVisibility(View.GONE);

而不是

 listView.setVisibility(View.INVISIBLE);

答案 2 :(得分:0)

1。首先hide来自{luout ListViewXML方法的onCreate()

2。ListView方法显示onTextChanged(),因为当用户输入内容时会调用此方法。

试试这个:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    ...........
    ..................

    inputSearch = (EditText) findViewById(R.id.inputSearch);
    listView = (ListView) findViewById(R.id.listView);

    // First hide ListView
    listView.setVisibility(View.INVISIBLE);

    inputSearch.addTextChangedListener(new TextWatcher() {

        @Override
        public void onTextChanged(CharSequence cs, int arg1, int arg2, int arg3) {
           // Show ListView
           if(listView.getVisibility() != View.VISIBLE)
               listView.setVisibility(View.VISIBLE);
        }

        @Override
        public void beforeTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {

        }

        @Override
        public void afterTextChanged(Editable arg0) {

        }
    });
}