安卓列表视图在对话框内的标签布局不能显示滚动条[英] Android listview inside tab layout inside dialog can't get scroll bars to show up

本文是小编为大家收集整理的关于安卓列表视图在对话框内的标签布局不能显示滚动条的处理/解决方法,可以参考本文帮助大家快速定位并解决问题,中文翻译不准确的可切换到English标签页查看源文。

问题描述

我有一个自定义对话框类,该类别扩展了对话框.在此内,我有一个带有2个选项卡的标签布局.在每个选项卡中,我都有一个列表视图.一切都起作用,但我无法让滚动条出现.

这是我的XML:

<?xml version="1.0" encoding="utf-8"?>

<TabHost
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/TabHost01"
android:layout_width="300dp"
android:layout_height="300dp">

    <LinearLayout
    android:orientation="vertical"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">

    <TabWidget
        android:id="@android:id/tabs"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"/>

    <FrameLayout
        android:id="@android:id/tabcontent"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">

    <ListView
        android:id="@+id/ListView01"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:scrollbars="vertical"
        android:scrollbarAlwaysDrawVerticalTrack="true"/>

    <ListView
        android:id="@+id/ListView02"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:scrollbars="vertical"
        android:scrollbarAlwaysDrawVerticalTrack="true"/>

    </FrameLayout>
</LinearLayout>
</TabHost>

,这是我的代码的一部分,它设置了这一点:

    // get this window's layout parameters so we can change the position
WindowManager.LayoutParams params = getWindow().getAttributes(); 

    // change the position. 0,0 is center
    params.x = 0;
    params.y = 250;
    this.getWindow().setAttributes(params); 

    // no title on this dialog
requestWindowFeature(Window.FEATURE_NO_TITLE);

setContentView(R.layout.myLayout);

// instantiate our list views for each tab
ListView listView01 = (ListView)findViewById(R.id.ListView01);
ListView listView02 = (ListView)findViewById(R.id.ListView02);


// instantiate and set our custom list view adapters
listViewAdapter01 = new ListViewAdapter01(context);
listView01.setAdapter(listViewAdapter01);

listViewAdapter02 = new ListViewAdapter02(context);
listView02.setAdapter(listViewAdapter02);

// get our tabHost from the xml
TabHost tabs = (TabHost)findViewById(R.id.TabHost01);
tabs.setup();

// create tab 1
TabHost.TabSpec tab1 = tabs.newTabSpec("tab1");
tab1.setContent(R.id.listView01);
tab1.setIndicator("List 1");
tabs.addTab(tab1);

// create tab 2
TabHost.TabSpec tab2 = tabs.newTabSpec("tab2");
tab2.setContent(R.id.listView02);
tab2.setIndicator("List 01");
tabs.addTab(tab2);

推荐答案

确定这是一个自定义对话框类的完整工作代码,其中包含包含listView的选项卡式布局.第一个选项卡具有一个listView,行是文本视图和一个imageView,imageView正确对齐.第二个选项卡具有一个listView,行是单个文本视图.滚动条设置为高褪色持续时间,以使它们始终显示.对话框窗口本身设置为静态大小,以防止对话框切换选项卡时调整大小.对话框窗口也位于屏幕上的较低位置,而不是中间. ListViews使用自定义适配器,第二个选项卡的ListView已注册为上下文菜单.

我将所有内容都重命名为更通用,并且ONT包含我们产品的名称,因此我在重命名时可能会出现一些错别字,但我认为一切都是正确的.试图尽我所能评论代码.希望这对某些人有帮助.

CustomDialog的XML(custom_dialog_layout.xml):

<?xml version="1.0" encoding="utf-8"?>

<TabHost
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/TabHost01"
    android:layout_width="fill_parent"
    android:layout_height="300dip">

    <LinearLayout
        android:orientation="vertical"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">

        <TabWidget
            android:id="@android:id/tabs"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"/>

        <FrameLayout
            android:id="@android:id/tabcontent"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content">

        <ListView
            android:id="@+id/listView01"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:scrollbars="vertical"
            android:scrollbarFadeDuration="1000000"/>

        <ListView
            android:id="@+id/listView02"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:scrollbars="vertical"
            android:scrollbarFadeDuration="1000000"/>

        </FrameLayout>
    </LinearLayout>
</TabHost>

TAB 1 ListView Row XML(List_view_01_row.xml).这是一个文本视图,左对齐和一个imageView,右对齐.文本视图已设置为更大的高度,以迫使ListView行更高. ListView也已设置为特定的宽度,这将imageView推向右侧以使其对齐.

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:paddingBottom="5dip"
    android:paddingTop="5dip"
    android:paddingLeft="10dip"
    android:paddingRight="10dip">

    <TableLayout
        android:id="@+id/list_view_01_row_table_layout"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:stretchColumns="0">

        <TableRow
            android:id="@+id/list_view_01_row_table_row"
            android:gravity="center_vertical"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content">

                <TextView
                    android:id="@+id/list_view_01_row_text_view"
                    android:textSize="18sp"
                    android:textColor="#ffffff"  
                    android:gravity="center_vertical"
                    android:layout_width="200dip" 
                    android:layout_height="75dip" />

                <ImageView
                    android:id="@+id/list_view_01_row_image_view"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"/>
        </TableRow>
    </TableLayout>
</LinearLayout>

选项卡2 ListView Row XML(List_view_02_row.xml).与Tab 1相同,但使用单个文本视图,没有ImageView.

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:paddingBottom="5dip"
    android:paddingTop="5dip"
    android:paddingLeft="10dip"
    android:paddingRight="10dip">

    <TableLayout
        android:id="@+id/list_view_02_row_table_layout"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:stretchColumns="0">

        <TableRow
            android:id="@+id/list_view_02_row_table_row"
            android:gravity="center_vertical"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content">

            <TextView
                android:id="@+id/list_view_02_row_text_view"
                android:textSize="18sp"
                android:textColor="#ffffff"  
                android:gravity="center_vertical"
                android:layout_width="fill_parent" 
                android:layout_height="75dip" />
        </TableRow>
    </TableLayout>
</LinearLayout>

最后是"自定义对话框"类.

import android.app.Dialog;
import android.content.Context;
import android.view.ContextMenu;
import android.view.LayoutInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
import android.view.WindowManager;
import android.view.ContextMenu.ContextMenuInfo;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TabHost;
import android.widget.TextView;

/**
 * This is a custom dialog class that will hold a tab view with 2 tabs.
 * Tab 1 will be a list view. Tab 2 will be a list view.
 * 
 */
public class CustomDialog extends Dialog
{
    /**
     * Our custom list view adapter for tab 1 listView (listView01).
     */
    ListView01Adapter listView01Adapter = null;

    /**
     * Our custom list view adapter for tab2 listView (listView02).
     */
    ListView02Adapter listView02Adapter = null;

    /**
     * Default constructor.
     * 
     * @param context
     */
    public CustomDialog(Context context)
    {
        super(context);

        // get this window's layout parameters so we can change the position
        WindowManager.LayoutParams params = getWindow().getAttributes(); 

        // change the position. 0,0 is center
        params.x = 0;
        params.y = 250;
        this.getWindow().setAttributes(params); 

        // no title on this dialog
        requestWindowFeature(Window.FEATURE_NO_TITLE);

        setContentView(R.layout.custom_dialog_layout);

        // instantiate our list views for each tab
        ListView listView01 = (ListView)findViewById(R.id.listView01);
        ListView listView02 = (ListView)findViewById(R.id.listView02);

        // register a context menu for all our listView02 items
        registerForContextMenu(listView02);

        // instantiate and set our custom list view adapters
        listView01Adapter = new ListView01Adapter(context);
        listView01.setAdapter(listView01Adapter);

        listView02Adapter = new ListView02Adapter(context);
        listView02.setAdapter(listView02Adapter);

        // bind a click listener to the listView01 list
        listView01.setOnItemClickListener(new AdapterView.OnItemClickListener()
        {
            public void onItemClick(AdapterView<?> parentView, View childView, int position, long id)
            {                   
                // will dismiss the dialog
                dismiss();
            }           
        });

        // bind a click listener to the listView02 list
        listView02.setOnItemClickListener(new AdapterView.OnItemClickListener()
        {
            public void onItemClick(AdapterView<?> parentView, View childView, int position, long id)
            {                   
                // will dismiss the dialog
                dismiss();          
            }           
        });

        // get our tabHost from the xml
        TabHost tabs = (TabHost)findViewById(R.id.TabHost01);
        tabs.setup();

        // create tab 1
        TabHost.TabSpec tab1 = tabs.newTabSpec("tab1");
        tab1.setContent(R.id.listView01);
        tab1.setIndicator("List 1");
        tabs.addTab(tab1);

        // create tab 2
        TabHost.TabSpec tab2 = tabs.newTabSpec("tab2");
        tab2.setContent(R.id.listView02);
        tab2.setIndicator("List 2");
        tabs.addTab(tab2);
    }

    /**
     * A custom list adapter for the listView01
     */
    private class ListView01Adapter extends BaseAdapter
    {        
        public ListView01Adapter(Context context)
        {

        }

        /**
         * This is used to return how many rows are in the list view
         */
        public int getCount()
        {
            // add code here to determine how many results we have, hard coded for now

            return 10;
        }

        /**
         * Should return whatever object represents one row in the
         * list.
         */
        public Object getItem(int position)
        {
            return position;
        }

        /**
         * Used to return the id of any custom data object.
         */
        public long getItemId(int position)
        {
            return position;
        }

        /**
         * This is used to define each row in the list view.
         */
        public View getView(int position, View convertView, ViewGroup parent)
        {            
            View row = convertView;

            // our custom holder will represent the view on each row. See class below.
            ListView01Holder holder = null;

            if(row == null)
            {                                                   
                LayoutInflater inflater = getLayoutInflater();

                // inflate our row from xml
                row = inflater.inflate(R.layout.list_view_01_row, parent, false);

                // instantiate our holder
                holder = new ListView01Holder(row);

                // set our holder to the row
                row.setTag(holder);
            }
            else
            {
                holder = (ListView01Holder)row.getTag();
            }

            return row;
        }

        // our custom holder
        class ListView01Holder
        {
            // text view
            private TextView text = null;

            // image view
            private ImageView image = null;

            ListView01Holder(View row)
            {    
                // get out text view from xml
                text = (TextView)row.findViewById(R.id.image);

                // add code here to set the text
                text.setText("");

                // get our image view from xml
                image = (ImageView)row.findViewById(R.id.list_view_01_row_image_view);

                // add code here to determine which image to load, hard coded for now
                rating.setImageResource(R.drawable.image);
            }
        }
    }

    /**
     * A custom list adapter for listView02
     */
    private class ListView02Adapter extends BaseAdapter
    {        
        public ListView02Adapter(Context context)
        {

        }

        /**
         * This is used to return how many rows are in the list view
         */
        public int getCount()
        {
            // add code here to determine how many results we have, hard coded for now

            return 5;
        }

        /**
         * Should return whatever object represents one row in the
         * list.
         */
        public Object getItem(int position)
        {
            return position;
        }

        /**
         * Used to return the id of any custom data object.
         */
        public long getItemId(int position)
        {
            return position;
        }

        /**
         * This is used to define each row in the list view.
         */
        public View getView(int position, View convertView, ViewGroup parent)
        {            
            View row = convertView;
            ListView02Holder holder = null;

            if(row == null)
            {                                                   
                LayoutInflater inflater = getLayoutInflater();

                row=inflater.inflate(R.layout.list_view_02_row, parent, false);
                holder = new ListView02Holder(row);
                row.setTag(holder);
            }
            else
            {
                holder = (ListView02Holder)row.getTag();
            }

            return row;
        }

        class ListView02Holder
        {
            private TextView text = null;

            ListView02Holder(View row)
            {
                text = (TextView)row.findViewById(R.id.list_view_02_row_text_view);
                text.setText("");
            }
        }
    }

    /**
     * This is called when a long press occurs on our listView02 items.
     */
    public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo)
    {
        super.onCreateContextMenu(menu, v, menuInfo);

        menu.setHeaderTitle("Context Menu");  
        menu.add(0, v.getId(), 0, "Delete");  
    }

    /**
     * This is called when an item in our context menu is clicked.
     */
    public boolean onContextItemSelected(MenuItem item)
    {  
        if(item.getTitle() == "Delete")
        {

        }  
        else
        {
            return false;
        }

        return true;  
    }  
}

其他推荐答案

尝试将布局XML中的所有android:layout_width属性设置为"fill_parent".

本文地址:https://www.itbaoku.cn/post/102728.html

问题描述

I have a custom dialog class that extends Dialog. Inside this I have a Tab Layout with 2 tabs. In each tab I have a list view. Everything works but I can't get scroll bars to show up.

Here is my XML:

<?xml version="1.0" encoding="utf-8"?>

<TabHost
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/TabHost01"
android:layout_width="300dp"
android:layout_height="300dp">

    <LinearLayout
    android:orientation="vertical"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">

    <TabWidget
        android:id="@android:id/tabs"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"/>

    <FrameLayout
        android:id="@android:id/tabcontent"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">

    <ListView
        android:id="@+id/ListView01"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:scrollbars="vertical"
        android:scrollbarAlwaysDrawVerticalTrack="true"/>

    <ListView
        android:id="@+id/ListView02"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:scrollbars="vertical"
        android:scrollbarAlwaysDrawVerticalTrack="true"/>

    </FrameLayout>
</LinearLayout>
</TabHost>

and here is part of my code that sets this up:

    // get this window's layout parameters so we can change the position
WindowManager.LayoutParams params = getWindow().getAttributes(); 

    // change the position. 0,0 is center
    params.x = 0;
    params.y = 250;
    this.getWindow().setAttributes(params); 

    // no title on this dialog
requestWindowFeature(Window.FEATURE_NO_TITLE);

setContentView(R.layout.myLayout);

// instantiate our list views for each tab
ListView listView01 = (ListView)findViewById(R.id.ListView01);
ListView listView02 = (ListView)findViewById(R.id.ListView02);


// instantiate and set our custom list view adapters
listViewAdapter01 = new ListViewAdapter01(context);
listView01.setAdapter(listViewAdapter01);

listViewAdapter02 = new ListViewAdapter02(context);
listView02.setAdapter(listViewAdapter02);

// get our tabHost from the xml
TabHost tabs = (TabHost)findViewById(R.id.TabHost01);
tabs.setup();

// create tab 1
TabHost.TabSpec tab1 = tabs.newTabSpec("tab1");
tab1.setContent(R.id.listView01);
tab1.setIndicator("List 1");
tabs.addTab(tab1);

// create tab 2
TabHost.TabSpec tab2 = tabs.newTabSpec("tab2");
tab2.setContent(R.id.listView02);
tab2.setIndicator("List 01");
tabs.addTab(tab2);

推荐答案

OK here is the complete working code for a custom dialog class that contains a tabbed layout which contains a listView. The first tab has a listView with rows being a textView and an imageView with the imageView being right aligned. The second tab has a listView with rows being a single textView. The scroll bars are set to a high fade duration to make them always show. The dialog window itself is set to a static size to prevent the dialog from resizing when switching tabs. The dialog window is also positioned lower on the screen, not in the center. The listViews use custom adapters and the second tab's listView is registered for a context menu.

I have renamed everything to be more generic and ont contain names of our product, so I may have made some typos when renaming but I think everything is right. Tried to comment the code as best I could. Hope this helps some people.

The customDialog's XML (custom_dialog_layout.xml):

<?xml version="1.0" encoding="utf-8"?>

<TabHost
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/TabHost01"
    android:layout_width="fill_parent"
    android:layout_height="300dip">

    <LinearLayout
        android:orientation="vertical"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">

        <TabWidget
            android:id="@android:id/tabs"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"/>

        <FrameLayout
            android:id="@android:id/tabcontent"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content">

        <ListView
            android:id="@+id/listView01"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:scrollbars="vertical"
            android:scrollbarFadeDuration="1000000"/>

        <ListView
            android:id="@+id/listView02"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:scrollbars="vertical"
            android:scrollbarFadeDuration="1000000"/>

        </FrameLayout>
    </LinearLayout>
</TabHost>

Tab 1 listView row XML (list_view_01_row.xml). This is a textView, left aligned and an imageView, right aligned. The textView has been set to a larger height in order to force the listView rows to be higher. The listView has also been set to a specific width, this pushes the imageView to the right in order to right align it.

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:paddingBottom="5dip"
    android:paddingTop="5dip"
    android:paddingLeft="10dip"
    android:paddingRight="10dip">

    <TableLayout
        android:id="@+id/list_view_01_row_table_layout"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:stretchColumns="0">

        <TableRow
            android:id="@+id/list_view_01_row_table_row"
            android:gravity="center_vertical"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content">

                <TextView
                    android:id="@+id/list_view_01_row_text_view"
                    android:textSize="18sp"
                    android:textColor="#ffffff"  
                    android:gravity="center_vertical"
                    android:layout_width="200dip" 
                    android:layout_height="75dip" />

                <ImageView
                    android:id="@+id/list_view_01_row_image_view"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"/>
        </TableRow>
    </TableLayout>
</LinearLayout>

Tab 2 listView row XML (list_view_02_row.xml). Same as tab 1 but with a single textView, no imageView.

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:paddingBottom="5dip"
    android:paddingTop="5dip"
    android:paddingLeft="10dip"
    android:paddingRight="10dip">

    <TableLayout
        android:id="@+id/list_view_02_row_table_layout"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:stretchColumns="0">

        <TableRow
            android:id="@+id/list_view_02_row_table_row"
            android:gravity="center_vertical"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content">

            <TextView
                android:id="@+id/list_view_02_row_text_view"
                android:textSize="18sp"
                android:textColor="#ffffff"  
                android:gravity="center_vertical"
                android:layout_width="fill_parent" 
                android:layout_height="75dip" />
        </TableRow>
    </TableLayout>
</LinearLayout>

And finally the custom Dialog class.

import android.app.Dialog;
import android.content.Context;
import android.view.ContextMenu;
import android.view.LayoutInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
import android.view.WindowManager;
import android.view.ContextMenu.ContextMenuInfo;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TabHost;
import android.widget.TextView;

/**
 * This is a custom dialog class that will hold a tab view with 2 tabs.
 * Tab 1 will be a list view. Tab 2 will be a list view.
 * 
 */
public class CustomDialog extends Dialog
{
    /**
     * Our custom list view adapter for tab 1 listView (listView01).
     */
    ListView01Adapter listView01Adapter = null;

    /**
     * Our custom list view adapter for tab2 listView (listView02).
     */
    ListView02Adapter listView02Adapter = null;

    /**
     * Default constructor.
     * 
     * @param context
     */
    public CustomDialog(Context context)
    {
        super(context);

        // get this window's layout parameters so we can change the position
        WindowManager.LayoutParams params = getWindow().getAttributes(); 

        // change the position. 0,0 is center
        params.x = 0;
        params.y = 250;
        this.getWindow().setAttributes(params); 

        // no title on this dialog
        requestWindowFeature(Window.FEATURE_NO_TITLE);

        setContentView(R.layout.custom_dialog_layout);

        // instantiate our list views for each tab
        ListView listView01 = (ListView)findViewById(R.id.listView01);
        ListView listView02 = (ListView)findViewById(R.id.listView02);

        // register a context menu for all our listView02 items
        registerForContextMenu(listView02);

        // instantiate and set our custom list view adapters
        listView01Adapter = new ListView01Adapter(context);
        listView01.setAdapter(listView01Adapter);

        listView02Adapter = new ListView02Adapter(context);
        listView02.setAdapter(listView02Adapter);

        // bind a click listener to the listView01 list
        listView01.setOnItemClickListener(new AdapterView.OnItemClickListener()
        {
            public void onItemClick(AdapterView<?> parentView, View childView, int position, long id)
            {                   
                // will dismiss the dialog
                dismiss();
            }           
        });

        // bind a click listener to the listView02 list
        listView02.setOnItemClickListener(new AdapterView.OnItemClickListener()
        {
            public void onItemClick(AdapterView<?> parentView, View childView, int position, long id)
            {                   
                // will dismiss the dialog
                dismiss();          
            }           
        });

        // get our tabHost from the xml
        TabHost tabs = (TabHost)findViewById(R.id.TabHost01);
        tabs.setup();

        // create tab 1
        TabHost.TabSpec tab1 = tabs.newTabSpec("tab1");
        tab1.setContent(R.id.listView01);
        tab1.setIndicator("List 1");
        tabs.addTab(tab1);

        // create tab 2
        TabHost.TabSpec tab2 = tabs.newTabSpec("tab2");
        tab2.setContent(R.id.listView02);
        tab2.setIndicator("List 2");
        tabs.addTab(tab2);
    }

    /**
     * A custom list adapter for the listView01
     */
    private class ListView01Adapter extends BaseAdapter
    {        
        public ListView01Adapter(Context context)
        {

        }

        /**
         * This is used to return how many rows are in the list view
         */
        public int getCount()
        {
            // add code here to determine how many results we have, hard coded for now

            return 10;
        }

        /**
         * Should return whatever object represents one row in the
         * list.
         */
        public Object getItem(int position)
        {
            return position;
        }

        /**
         * Used to return the id of any custom data object.
         */
        public long getItemId(int position)
        {
            return position;
        }

        /**
         * This is used to define each row in the list view.
         */
        public View getView(int position, View convertView, ViewGroup parent)
        {            
            View row = convertView;

            // our custom holder will represent the view on each row. See class below.
            ListView01Holder holder = null;

            if(row == null)
            {                                                   
                LayoutInflater inflater = getLayoutInflater();

                // inflate our row from xml
                row = inflater.inflate(R.layout.list_view_01_row, parent, false);

                // instantiate our holder
                holder = new ListView01Holder(row);

                // set our holder to the row
                row.setTag(holder);
            }
            else
            {
                holder = (ListView01Holder)row.getTag();
            }

            return row;
        }

        // our custom holder
        class ListView01Holder
        {
            // text view
            private TextView text = null;

            // image view
            private ImageView image = null;

            ListView01Holder(View row)
            {    
                // get out text view from xml
                text = (TextView)row.findViewById(R.id.image);

                // add code here to set the text
                text.setText("");

                // get our image view from xml
                image = (ImageView)row.findViewById(R.id.list_view_01_row_image_view);

                // add code here to determine which image to load, hard coded for now
                rating.setImageResource(R.drawable.image);
            }
        }
    }

    /**
     * A custom list adapter for listView02
     */
    private class ListView02Adapter extends BaseAdapter
    {        
        public ListView02Adapter(Context context)
        {

        }

        /**
         * This is used to return how many rows are in the list view
         */
        public int getCount()
        {
            // add code here to determine how many results we have, hard coded for now

            return 5;
        }

        /**
         * Should return whatever object represents one row in the
         * list.
         */
        public Object getItem(int position)
        {
            return position;
        }

        /**
         * Used to return the id of any custom data object.
         */
        public long getItemId(int position)
        {
            return position;
        }

        /**
         * This is used to define each row in the list view.
         */
        public View getView(int position, View convertView, ViewGroup parent)
        {            
            View row = convertView;
            ListView02Holder holder = null;

            if(row == null)
            {                                                   
                LayoutInflater inflater = getLayoutInflater();

                row=inflater.inflate(R.layout.list_view_02_row, parent, false);
                holder = new ListView02Holder(row);
                row.setTag(holder);
            }
            else
            {
                holder = (ListView02Holder)row.getTag();
            }

            return row;
        }

        class ListView02Holder
        {
            private TextView text = null;

            ListView02Holder(View row)
            {
                text = (TextView)row.findViewById(R.id.list_view_02_row_text_view);
                text.setText("");
            }
        }
    }

    /**
     * This is called when a long press occurs on our listView02 items.
     */
    public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo)
    {
        super.onCreateContextMenu(menu, v, menuInfo);

        menu.setHeaderTitle("Context Menu");  
        menu.add(0, v.getId(), 0, "Delete");  
    }

    /**
     * This is called when an item in our context menu is clicked.
     */
    public boolean onContextItemSelected(MenuItem item)
    {  
        if(item.getTitle() == "Delete")
        {

        }  
        else
        {
            return false;
        }

        return true;  
    }  
}

其他推荐答案

Try to set all of the android:layout_width attributes within your layout xml to "fill_parent".