Android 刷新listview设置所有可见复选框

Android 刷新listview设置所有可见复选框,android,listview,checkbox,Android,Listview,Checkbox,编辑:我希望通过长时间单击显示所有复选框。但只显示一个复选框 我有一个带有自定义row.xml的listview。xml有一个复选框、imageview、textview和imageview 默认情况下,复选框为visibility:GONE in the row.xml 在代码中,我重写了下一个方法: @Override public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo

编辑:我希望通过长时间单击显示所有复选框。但只显示一个复选框

我有一个带有自定义row.xml的listview。xml有一个复选框、imageview、textview和imageview

默认情况下,复选框为visibility:GONE in the row.xml

在代码中,我重写了下一个方法:

 @Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
    super.onCreateContextMenu(menu, v, menuInfo);

    checkBox=(CheckBox)findViewById(R.id.checkBox);
    checkBox.setVisibility(View.VISIBLE);

    myArrayAdapter.notifyDataSetChanged();

    }

}
但只显示一行。我尝试了所有的代码,但我找不到解决方案。有什么想法吗

接吻^^

使用我的自定义_row.xml进行编辑

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

    <CheckBox
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/checkBox"
        android:checked="false"

        android:visibility="gone"
        />

    <ImageView
            android:layout_width="25dp"
            android:layout_height="25dp"
            android:src="@drawable/image"/>

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="New Text"
            android:id="@+id/text1"/>

        <ImageView
            android:layout_width="25dp"
            android:layout_height="25dp"
            android:id="@+id/imageView"
            android:src="@android:drawable/ic_menu_add"
            />
    </LinearLayout>

可见性:gone的行为就像视图不存在一样。您应该在xml中使用visibility:invisible,以便以后可以从代码中看到它


在适配器集合CheckBoxVisibility(布尔值可见)中创建一个方法。并使用它设置所需的可见性

private int checkboxVisibility = View.GONE;

public void setCheckboxVisibility(int visibility) {
    this.checkboxVisibility = visibility
}
然后在适配器的getView()方法中使用checkboxVisibility属性

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    ...
    checkbox.setVisibility(checkboxVisibility);
    ...
}

我找不到有效的解决办法。最后,我构建了两个自定义_row.xml和两个类mycustom_arrayadapter

第一个类mycustom_arrayadapter获取带有checkbox.visibility的custom_行(GoE),第二个类mycustom_arrayadapter获取带有visibility.visibility的custom_行(当我在listview中长单击时)


这是可行的,但我认为这是最糟糕的解决方案;(

您可以发布您的xml吗?我想您已经将wrap_content设置为high,您正在注册上下文菜单的哪个视图?整个ListView还是一行?我不理解覆盖上下文菜单方法的原因,但您可以在
getView()中将它们设置为
visible
方法根据某些标志或您正在使用的任何东西。编辑:我不知道我在做什么。我是新手。我只希望当我有一个较长的时间时,在所有列表视图中出现复选框,如在文件资源管理器中,然后删除、重命名、共享等。Thak的人会为您的答案。Kisses^^不,这不正确。这并不意味着它从来就不存在,只是没有为它腾出一个空间。这并不意味着它不能被改成可见的。我应该重新措辞:“就好像没有添加视图一样。”如果一个不可见的用法出现在复选框的空白处。我用更好的方法^^谢谢埃洛迪·费拉里,我要试试这个。吻^^