在android listView中仅将按钮添加到一行 我试图在我的ListVIEW中间添加一个按钮。理想情况下,该按钮将分割listView,并在之后继续,但如果这不可能,我可以在listView中的一行中使用一个按钮。 例如我的列表视图将有第一行(图像+文本),第二行(图像+文本),按钮,并继续列表视图

在android listView中仅将按钮添加到一行 我试图在我的ListVIEW中间添加一个按钮。理想情况下,该按钮将分割listView,并在之后继续,但如果这不可能,我可以在listView中的一行中使用一个按钮。 例如我的列表视图将有第一行(图像+文本),第二行(图像+文本),按钮,并继续列表视图,android,android-listview,android-button,android-adapter,Android,Android Listview,Android Button,Android Adapter,我已经编写了以下代码。这会向listView中的一行添加一个按钮,但同时也会向我的listView中的每一行添加一个空按钮(现在有文本的按钮)。此外,重心的重力设置不起作用 我的xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_paren

我已经编写了以下代码。这会向listView中的一行添加一个按钮,但同时也会向我的listView中的每一行添加一个空按钮(现在有文本的按钮)。此外,重心的重力设置不起作用

我的xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="horizontal" >

     <ImageView android:id="@+id/imgUserIcon"
        android:layout_width="wrap_content"
        android:layout_height="fill_parent"
        android:layout_marginRight="10dp"
        android:layout_marginTop="5dp"
        android:gravity="center_vertical"
        android:scaleType="fitStart" />

     <Button
         android:id="@+id/buttonShowHide"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:gravity="center"
         android:text="@string/showHide" />

     <TextView android:id="@+id/txtTitle"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="10dp" 
                    android:layout_marginTop="5dp"
            />

</LinearLayout>
在我的活动中,我将以下两行添加到数组中,稍后我的适配器将使用这两行创建listView(我将向它传递一个将被更改为数组的ArrayList)

a) 有没有办法将listView和中间部分分开,只添加一个按钮?并继续相同的listView?因为我当前的解决方案尝试向行添加按钮

b) 你知道我为什么还要在图标标题类型行中添加一个空按钮吗? 我在我的实际列表视图中得到了图标、标题和空按钮

多谢各位

更新: 找到两个博客 和 ,但仍然没有任何运气。希望能得到更深入的帮助

有没有办法将listView和中间部分分开,只添加一个按钮?并继续相同的listView?因为我当前的解决方案尝试向行添加按钮

如果我理解你的问题,你想要的是:

我的列表视图将具有:

  • 图像+文本
  • 图像+文本
  • 钮扣
  • 图像+文本
等等

如果覆盖
getViewTypeCount()
getItemViewType()
,则可以有多种类型的行布局

  • getViewTypeCount()
    应返回类型数,在本例中为2
  • getItemViewType(int位置)
    将返回
    位置的行是哪种类型,在本例中为0或1

添加

我真的不知道如何区分图像文本行和按钮。我试图找到一种方法来查看我的映像是否为null(使用第二个构造函数),但这似乎不起作用

这听起来是个不错的方法,但由于
图标
是一个
int
它永远不会是
null
,因此未初始化整数的默认值为0。尝试:

@Override
public int getItemViewType(int position) {
    UserAccountData data = getItem(position);
    if(data.icon == 0)
        return 1;
    return 0;

    // The same thing in one line:
    //return getItem(position).icon == 0 ? 1 : 0;
}
有没有办法将listView和中间部分分开,只添加一个按钮?并继续相同的listView?因为我当前的解决方案尝试向行添加按钮

如果我理解你的问题,你想要的是:

我的列表视图将具有:

  • 图像+文本
  • 图像+文本
  • 钮扣
  • 图像+文本
等等

如果覆盖
getViewTypeCount()
getItemViewType()
,则可以有多种类型的行布局

  • getViewTypeCount()
    应返回类型数,在本例中为2
  • getItemViewType(int位置)
    将返回
    位置的行是哪种类型,在本例中为0或1

添加

我真的不知道如何区分图像文本行和按钮。我试图找到一种方法来查看我的映像是否为null(使用第二个构造函数),但这似乎不起作用

这听起来是个不错的方法,但由于
图标
是一个
int
它永远不会是
null
,因此未初始化整数的默认值为0。尝试:

@Override
public int getItemViewType(int position) {
    UserAccountData data = getItem(position);
    if(data.icon == 0)
        return 1;
    return 0;

    // The same thing in one line:
    //return getItem(position).icon == 0 ? 1 : 0;
}

嘿,山姆,谢谢,这就是我想要的。我是android新手,想知道你是否可以给我举一些例子,或者为我正在尝试完成的这类任务推荐一个好的教程?(我已经完成了图片+文字的基本教程)前一段时间我写了一个关于另一个问题的答案。我刚刚注意到你的更新,不要使用logc中的第一个例子,这是非常低效的。来自amberfog.com的那张图很棒,这些图比我发布的链接要好。你到底有什么问题?我几乎没有什么问题。a) 我真的不知道如何区分图像文本行和按钮。我试图找到一种方法来查看我的映像是否为null(使用第二个构造函数),但这似乎不起作用b)我查看了
getviewtypetcount
getItemViewType
上的一些堆栈溢出帖子。我真的不知道如何在我的代码中实现它们。主要是
getItemViewType
,因为在我的例子中,我不知道按钮前有多少行。我会看看你在评论和报告中发布的例子,回顾一下你的例子,我现在更清楚我不明白的地方:)。在我的例子中,我不知道按钮前有多少行,我只知道按钮前的最后一行是什么。我不知道如何使用
getViewTypeCount
,也不知道如何判断下一行是否应该是按钮。嘿,山姆,谢谢,这就是我想要得到的。我是android新手,想知道你是否可以给我举一些例子,或者为我正在尝试完成的这类任务推荐一个好的教程?(我已经完成了图片+文字的基本教程)前一段时间我写了一个关于另一个问题的答案。我刚刚注意到你的更新,不要使用logc中的第一个例子,这是非常低效的。来自amberfog.com的那张图很棒,这些图比我发布的链接要好。你到底有什么问题?我几乎没有什么问题。a) 我真的不知道如何区分图像文本行和按钮
user_data.add(new UserAccountData(icon, "title,"type"));
user_data.add(new UserAccountData("show Password","button"));
@Override
public int getItemViewType(int position) {
    UserAccountData data = getItem(position);
    if(data.icon == 0)
        return 1;
    return 0;

    // The same thing in one line:
    //return getItem(position).icon == 0 ? 1 : 0;
}