lis
lis

Reputation: 680

android listview without scrolling

I've got a LinearLayout which includes among others two ListViews. Each ListView has it's own ArrayAdapter. Now the Scrolling shouldn't be in the ListViews, the user should see the whole Lists and scroll the whole view. Sourrounding the LinearLayout with a ScrollView doesn't work because of the inerhit Scrolling Views... .

How can I expand the ListViews and let the user scroll only the outer view?

Upvotes: 0

Views: 4126

Answers (4)

Alpha
Alpha

Reputation: 1874

You should inflate Views Like this.

// from content View of activity or fragment
    listView = (LinearLayout) findViewById(R.id.sos_list_view);

    listView.removeAllViews();
    List<SosObject> sosList = batabase.getAllItems();

            for(SosObject t: sosList) {
                LayoutInflater inflater = (LayoutInflater) this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

// Item layout 
                View view = inflater.inflate(R.layout.sos_prewivew_item, null);

                TextView comment = (TextView) view.findViewById(R.id.sos_comment_text);
                TextView date = (TextView) view.findViewById(R.id.sos_date_text);
                TextView id = (TextView) view.findViewById(R.id.sos_answer_id);
                TextView tittle = (TextView) view.findViewById(R.id.answer_tittle);

                listView.addView(view);
            }
        }

Your xml Should look like:

<ScrollView> 
    <LinearLayout>
          </LinearLayout > // Fist list
          </LinearLayout > // Second list
    </LinearLayout>
</ScrollView>

Upvotes: 1

injecteer
injecteer

Reputation: 20699

ListViews cannot be overriden to lose the scrolling ability. They seem to be designed as top-level objects that occupy the whole screen.
So basically you have 2 options here:

  • Convert all your elements into ListView's items
  • use LinearLayouts instead of ListViews and wrap all elements in a ScrollView

Upvotes: 0

Umer
Umer

Reputation: 1556

This can be done easily in RecyclerView. But in this case you are using ListViews so try listView.setScrollContainer(false); may be it works for you

Upvotes: 1

Chris K.
Chris K.

Reputation: 1078

You should not use a ListView this way.

List Views are meant to recycle views, which it cannot do if its not the view that is scrolling.

You could simply use a LinearLayout and add every single view to the layout. This would be better than using a ListView.

(This does not mean it is the best solution)

Upvotes: 2

Related Questions