java - 如何使线性布局出现在 GridView 中?

标签 java android xml android-layout

这是代码。

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

    <LinearLayout
        android:id="@+id/grid_cell_color"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="#80A9A9A9"
        android:orientation="vertical" >
    </LinearLayout>

    <ImageView
        android:id="@+id/imageView1"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:src="@drawable/grid_cell_border" />

    <RelativeLayout
        android:id="@+id/grid_cell_background"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >
    </RelativeLayout>

</FrameLayout>

适配器代码是:

    @Override
    public int getCount() {
        return titles.length;
    }

    @Override
    public Object getItem(int position) {
        return titles[position];
    }

    @Override
    public long getItemId(int position) {
        return 0;
    }

    @Override
    public View getView(int position, View row, ViewGroup parent) {

        if (inflater == null)
            inflater = (LayoutInflater) view.getContext().getSystemService(
                    Context.LAYOUT_INFLATER_SERVICE);

        row = inflater.inflate(R.layout.grid_view_single_cell, parent, false);

        LinearLayout gridCell1= (LinearLayout) row.findViewById(R.id.grid_cell_color);

        if(position == 0 || position == 1 || position == 5){
            gridCell1.setVisibility(View.GONE);
            Log.i("GRID", "ENTERED");
        }

        RelativeLayout gridCell = (RelativeLayout) row.findViewById(R.id.grid_cell_background);

        gridCell.setBackgroundResource(titles[position]);
        return row;
    }


}

我想在某些单元格中放置灰色线性布局。但它没有出现。我该怎么做?我的引用似乎是正确的,但灰色布局仍然没有显示。

最佳答案

原因是ListView的item会被重用。

在此代码之后:

if(position == 0 || position == 1 || position == 5){
     gridCell1.setVisibility(View.GONE);
     Log.i("GRID", "ENTERED");
    }

您应该添加 else 子句:

else{
    gridCell1.setVisibility(View.VISIBLE);
}

可能还有另一个原因:将Linearlayout的高度更改为1dp。

关于java - 如何使线性布局出现在 GridView 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25844204/

相关文章:

javascript - 像 var a = (xml code) 这样的 JS 语法是如何工作的?

java - 更改自定义 JFileChooser 的外观会引发异常

android - 如何使用 Picasso 设置 @BindingAdapter?

c++ - 带有 XML 的 TCP 消息结构

android - AppCompat 操作栏大小与 ActionBarSherlock 的大小不同

java - Java 中用于 C# 构造的加密/解密等价物

xml - 如何更改 Excel XML 数据导出的缩进?

java - int 或 float 表示只能是整数或 "#.5"的数字

Java方法签名: Stream versus Collection versus var-arg

java - 使用内连接将多个 sql 查询转为单个查询