3

I want to display only 5 rows in a ListView and rest of them should be scrollable.So far i have tried this

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="vertical" >

    <EditText 
        android:id="@+id/txtFilename"
        android:layout_width="375dp"
        android:layout_height="wrap_content"
        android:layout_margin="10dp" />

    <ListView
        android:id="@+id/ListView01"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:scrollbarSize="2dp"
        android:

        /> 



     <LinearLayout 
        android:orientation="horizontal"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@color/gray"
        android:padding="5dp" >

        <Button 
            android:id="@+id/btnOk"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="OK"/>

        <Button 
            android:id="@+id/btnCancel"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="CANCEL"/>
    </LinearLayout>  


</LinearLayout>

and in java code

public class MainActivity extends Activity {

    private ListView list1;

    private String array[] = { "Iphone", "Tutorials", "Gallery", "Android",

    "item 1", "item 2", "item3", "item 4" };
    @SuppressWarnings("unchecked")
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);

        //parentLayout.add(childLayout);

        setContentView(R.layout.activity_main);
        list1 = (ListView) findViewById(R.id.ListView01);

        // By using setAdpater method in listview we an add string array in

        // list.

        list1.setAdapter(new ArrayAdapter(this,android.R.layout.simple_list_item_1, array));

    }

have any idea how to achieve it

2 Answers2

1

Here i am Just Modifying Your Layout just check it out!!

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="vertical" >

    <EditText 
        android:id="@+id/txtFilename"
        android:layout_width="375dp"
        android:layout_height="wrap_content"
        android:layout_margin="10dp" />
<LinearLayout
         android:layout_width="fill_parent"
         android:layout_height="300dip">
    <ListView
        android:id="@+id/ListView01"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:scrollbarSize="2dp"


        /> 


</LinearLayout>
     <LinearLayout 
        android:orientation="horizontal"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@color/gray"
        android:padding="5dp" >

        <Button 
            android:id="@+id/btnOk"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="OK"/>

        <Button 
            android:id="@+id/btnCancel"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="CANCEL"/>
    </LinearLayout>  


</LinearLayout>
Abhijit Chakra
  • 3,201
  • 37
  • 66
-1

I have written Demo for this Like:

if you want to fix Height of ListView to 5 items. then you have to set Height of ListView pragmatically by calculating listItems height.

First you need to create Layout for List Item and give it some fixed height, here i'm added height in Tag cause runtime i was getting layouts height as 0.

This is ListItem Layout

    <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/relativeLayout"
    android:layout_width="fill_parent"
    android:background="@android:color/black"
    android:tag="40"
    android:layout_height="40dp" >

    <TextView
        android:id="@+id/text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="XXX"
        android:textColor="@android:color/darker_gray"
        android:textSize="30sp" />

    <TextView
        android:id="@+id/text2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="20dp"
        android:layout_toRightOf="@+id/text"
        android:text="ZZZ"
        android:textColor="@android:color/darker_gray"
        android:textSize="30sp" />

</RelativeLayout>

and to set Height of ListView:

list    =   (ListView) findViewById(R.id.listView1);

    adapter = new Adapter(MainActivity.this, setter);
    list.setAdapter(adapter);        

    RelativeLayout.LayoutParams lstViewParams = (LayoutParams) list.getLayoutParams();        
    View lisItemInflatedView = View.inflate(this, R.layout.item, null);        
    RelativeLayout relLayoutInLstItem = (RelativeLayout) lisItemInflatedView.findViewById(R.id.relativeLayout);       
    final float scale = this.getResources().getDisplayMetrics().density;
    int pixels = (int) ( Integer.parseInt( relLayoutInLstItem.getTag().toString() ) * scale + 0.5f);    
    int listHeigt = pixels  * 5 + 5;       
    lstViewParams.height = listHeigt;

here's the screenshot..

enter image description here

Hope this will Help.

NaserShaikh
  • 1,576
  • 2
  • 23
  • 39
  • its my ListItem.. where i can have name and contact no. u need to worry about how many views are there in your list item. just get height of your list item and multiply it.. – NaserShaikh May 27 '13 at 07:12
  • i can't. i have given u more than enough. you need to put some effort. – NaserShaikh May 27 '13 at 09:00
  • its very simple if you want to fixed number of Listview Items in listview you can put the listview in a linearlayout. – Abhijit Chakra May 27 '13 at 11:07
  • if he want to display 5 items approx he can use 300dip that will display nearly 5 Items and the rest of will come as scrollable if he has more than 5 Items. – Abhijit Chakra May 27 '13 at 11:14