Javacadabra
Javacadabra

Reputation: 5758

Setting visibility of ListView

I want to show my list view when the user clicks on a button and hide it again when they click on a button. This is the onClick listener for the button in question:

connectBtn.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            if(open){
                mDbAdapter.close();
                connectBtn.setText("Open Database");
                open = false;
                hideUI();


            }else{
                mDbAdapter = new ContactsDbAdapter(v.getContext());
                mDbAdapter.open();
                connectBtn.setText("Close Database");
                open = true;
                showUI();
                //retrieve data
                fillData();
            }
        }
    });

This is the showUI() method:

protected void showUI() {
    fName.setVisibility(View.VISIBLE);
    lName.setVisibility(View.VISIBLE);
    fNameBox.setVisibility(View.VISIBLE);
    lNameBox.setVisibility(View.VISIBLE);
    createBtn.setVisibility(View.VISIBLE);
    this.setVisible(true);

    createBtn.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            mDbAdapter.createContact(fNameBox.getText().toString(), lNameBox.getText().toString());
            fillData();
        }
    });
}

and the hideUI() method:

protected void hideUI() {
    fName.setVisibility(View.INVISIBLE);
    lName.setVisibility(View.INVISIBLE);
    fNameBox.setVisibility(View.INVISIBLE);
    fNameBox.clearComposingText();
    lNameBox.setVisibility(View.INVISIBLE);
    lNameBox.clearComposingText();
    createBtn.setVisibility(View.INVISIBLE);
    this.setVisible(false);

}

It works fine when I set the visibility to true. However when I set it to false I get a black screen but no crash or error. Any idea?

NOTE: this.setVisible(false);. My class extends ListActivity.

Upvotes: 1

Views: 5562

Answers (2)

Vinayakkumar
Vinayakkumar

Reputation: 6480

ListActivity is hold list view

if u do this.setVissiblity(false); it hide the list view and its contents so u r seeing background color in ur case it is black.

Good way is take Listview in xml and get id make vissible nad invissible of that view u feel very confortable with this apprch

http://www.vogella.com/articles/AndroidListView/article.html read this u will get clear idea. and make changes accordingly

Upvotes: 0

Abhinav Singh Maurya
Abhinav Singh Maurya

Reputation: 3313

setVisibility(View.INVISIBLE);

Just makes you view invisible but the space taken by view will be their itself

use setVisibility(View.GONE); so that the size of view will be lapsed

Use this and let me know if it is helpful

Upvotes: 3

Related Questions