Is it possible to disable scroll on a listView?

android, android-layout, listview

Solution

If I understand you well, you just need some more views wich are scrollable along with your listview. The best way to implement it is to call `addHeaderView()` and `addFooterView()` on your `ListView()`.

EDIT:

It should go like this, I think:

@Override
public void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.your_main_layout);
    LayoutInflater inflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    View header = inflater.inflate(R.layout.your_header_layout); //R.layout, not R.id!

    (ListView) list = findViewById(android.R.list);
    list.addHeaderView(header);

    list.setAdapter(adapter); //according to docs you should call setAdapter() after addHeaderView()

    //to get the spinner
    (Spinner) spinner = (Spinner) header.findViewById(R.id.spinner);

}

I'm writing from memory and didn't test it, but I think it should work. Try it out when you get a moment.

Problem

I dynamically add items to a `ListView` and want to make all the items always visible, without scrolling. Layout Code: ``` <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@drawable/recipe_inside" android:orientation="vertical" > <ScrollView android:layout_width="match_parent" android:layout_height="wrap_content" > <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="vertical" > <ImageView android:id="@+id/imageView1" android:layout_width="match_parent" android:layout_height="16dp" android:src="@drawable/head_cella" /> <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="41dp" android:background="@drawable/body_cella" android:gravity="center_horizontal" android:paddingTop="5dp" android:text="Remember to save before leaving this page or inserted/modified data will be lost." android:textColor="#000000" android:textSize="13dp" /> <ImageView android:id="@+id/ImageView01" android:layout_width="match_parent" android:layout_height="16dp" android:layout_marginTop="30dp" android:src="@drawable/head_cella" /> <TextView android:id="@+id/TextView01" android:layout_width="wrap_content" android:layout_height="35dp" android:background="@drawable/body_cella" android:gravity="center_horizontal" android:paddingTop="10dp" android:text="Category" android:textColor="#000000" android:textSize="15dp" /> <Spinner android:id="@+id/category_spinner" android:layout_width="match_parent" android:layout_height="wrap_content" /> <ImageView android:id="@+id/ImageView02" android:layout_width="match_parent" android:layout_height="16dp" android:layout_marginTop="30dp" android:src="@drawable/head_cella" /> <TextView android:id="@+id/TextView02" android:layout_width="wrap_content" android:layout_height="35dp" android:background="@drawable/body_cella" android:gravity="center_horizontal" android:paddingTop="10dp" android:text="Name" android:textColor="#000000" android:textSize="15dp" /> <EditText android:id="@+id/recipe_title" android:layout_width="match_parent" android:layout_height="wrap_content" android:ems="10" android:hint="Recipe title" android:lines="1"/> <ImageView android:id="@+id/ImageView03" android:layout_width="match_parent" android:layout_height="16dp" android:layout_marginTop="30dp" android:src="@drawable/head_cella" /> <TextView android:id="@+id/TextView03" android:layout_width="wrap_content" android:layout_height="35dp" android:background="@drawable/body_cella" android:gravity="center_horizontal" android:paddingTop="10dp" android:text="Ingredients" android:textColor="#000000" android:textSize="15dp" /> <ListView android:id="@android:id/list" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="1" android:cacheColorHint="#00000000" android:divider="#00000000" android:isScrollContainer="false" > </ListView> <Button android:id="@+id/button_ing" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="" android:background="@drawable/add_recipe_button" android:onClick="addItems"/> </LinearLayout> </ScrollView></LinearLayout> ``` old OnCreate() function code: ``` protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.add_recipe_form); spinner = (Spinner)myhead.findViewById(R.id.category_spinner); Cursor cursor = mydb.getCategoriesList(); ArrayList<Category> list = new ArrayList<Category>(); list.add(new Category(0,"Choose a category")); while (cursor.moveToNext()) { list.add(new Category(cursor.getInt(0),cursor.getString(1))); } // Step 2: Create and fill an ArrayAdapter with a bunch of "State" objects ArrayAdapter spinnerArrayAdapter = new ArrayAdapter(this,android.R.layout.simple_spinner_item, list); // Step 3: Tell the spinner about our adapter spinner.setAdapter(spinnerArrayAdapter); spinner.setOnItemSelectedListener(this); setListAdapter(adapter); ingredients.add((View)findViewById(R.layout.row_add_recipe)); adapter.notifyDataSetChanged(); } ``` If I move code related to fill my spinner with database data, it always returns me a NullPointerException as it's not found in my layout. So I need to keep it here and the solution adding addHeaderView() to my ListView seems to be ok, but I have another NullPointerException regarding my head layout: ``` protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.add_recipe_form); ListView mylistview = (ListView) findViewById(android.R.id.list); LinearLayout myhead = (LinearLayout)findViewById(R.id.linear_form); mylistview.addHeaderView(myhead); spinner = (Spinner)myhead.findViewById(R.id.category_spinner); Cursor cursor = mydb.getCategoriesList(); ArrayList<Category> list = new ArrayList<Category>(); list.add(new Category(0,"Choose a category")); while (cursor.moveToNext()) { list.add(new Category(cursor.getInt(0),cursor.getString(1))); } // Step 2: Create and fill an ArrayAdapter with a bunch of "State" objects ArrayAdapter spinnerArrayAdapter = new ArrayAdapter(this,android.R.layout.simple_spinner_item, list); // Step 3: Tell the spinner about our adapter spinner.setAdapter(spinnerArrayAdapter); spinner.setOnItemSelectedListener(this); setListAdapter(adapter); ingredients.add((View)findViewById(R.layout.row_add_recipe)); adapter.notifyDataSetChanged(); } ```

Original source