避免在Listview中重复ImageButton

时间:2013-05-09 20:59:10

标签: android android-layout android-listview android-linearlayout

我是android&的新手开发我的第一个个人日记应用程序。 现在我在Listview中遇到问题,我在一个布局中有一个Imagebutton,我想表现得像一个标题,我在另一个布局中有一些TextViews,我表示为listview,它们与数据库绑定。现在的问题是,我从数据库中获得了很多行,因为生成了许多实际上我不想要的按钮。我正在使用List Activity从textview中生成listview。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginBottom="2dp"
    android:layout_weight="1"
    android:orientation="vertical"
    android:padding="2dp"
    android:weightSum="2" >

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@drawable/detail_title_bar_2"
        android:orientation="horizontal"
        android:layout_marginBottom="5dp" >

        <ImageButton
            android:id="@+id/btnadd"
            android:layout_width="40dp"
            android:layout_height="40dp"
            android:layout_gravity="bottom"
            android:src="@drawable/add" />
    </LinearLayout>

 <LinearLayout
            android:layout_width="90dp"
            android:layout_height="wrap_content"
            android:background="@drawable/detail_title_bar_2"
            android:orientation="vertical"
            android:paddingRight="10dp" >

            <TextView
                android:id="@+id/txtday"
                style="@style/Title_day"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="right"
                android:layout_marginBottom="-10dp"
                android:includeFontPadding="false"
                android:verticalSpacing="0px" />

            <TextView
                android:id="@+id/txtmonth"
                style="@style/Title_Month"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="right"
                android:layout_marginBottom="-10dp"
                android:includeFontPadding="false"
                android:verticalSpacing="0px" />

            <TextView
                android:id="@+id/txtyear"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="right" />

            <TextView
                android:id="@+id/txttime"
                style="@style/Title_time"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="right" />
        </LinearLayout>
</LinearLayout>

2 个答案:

答案 0 :(得分:0)

正如我在您的问题中所提到的那样,您有一个列表视图,其中填充了从数据库加载的条目,并且您希望列表顶部的按钮例如是添加新项目?

然后你可以使用addHeaderView()函数。将包含图像按钮的布局定义为xml布局文件,例如list_header_view.xml并将其添加到列表视图中:

View headerView = (View)inflater.inflate(
            R.layout.list_header_view, null);

listview.addHeaderView(headerView);

list_header_view.xml可以包含:

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@drawable/detail_title_bar_2"
    android:orientation="horizontal"
    android:layout_marginBottom="5dp" >

    <ImageButton
        android:id="@+id/btnadd"
        android:layout_width="40dp"
        android:layout_height="40dp"
        android:layout_gravity="bottom"
        android:src="@drawable/add" />
</LinearLayout>

答案 1 :(得分:0)

不要害怕将其用作单独的组件。如果您正确使用ListView,则效率不高。

以下是一些教程如何使用来自Google IO的ListView's,由Romain Guy提供。它持续超过50分钟,但它是值得的。 Google I/O 2010, The world of ListView

关键部分是重用ListView的创建部分而不是创建新部分。

然后有一些关于在View's方法中查找getView()的有用信息。 findViewById()方法就像在树中搜索一样 - 通过Activity布局,然后是孩子,直到找到你想要的View。这可能对设备来说很难。因此,他们建议使用名为ViewHolder的静态类来查找布局的某些部分只保留一次的位置。不是getView()

的每次通话