为什么我的Custom GridView只显示一列?

时间:2017-04-06 17:53:36

标签: java android gridview baseadapter custom-adapter

我尝试制作自定义GridView,以逐步添加TextView项目。 TextViews只需要在其中包含文本的ImageView。

但是由于一些奇怪的原因,它只显示了4列中的1列(但如果它太大而3则是我的最低容量)。

我为那些尝试同样事情的人查看了类似的案例,但结果却失败了。 我得到的只是每列一列Gridview。

我希望听到一些有关它的意见,以解决这个问题。

我的GridView:

<GridView
    android:id="@+id/gridView"
    android:layout_width="300dp"
    android:layout_height="300dp"
    android:layout_alignParentEnd="true"
    android:layout_alignParentTop="true"
    android:layout_marginTop="73dp"
    android:layout_toEndOf="@+id/imageView15"
    android:columnCount="4"
    android:gravity="center"
    android:columnWidth="100dp"
    android:stretchMode="columnWidth" />

我的项目布局:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent" android:layout_height="match_parent"
android:backgroundTint="@android:color/black"
android:alpha="100"
android:layoutDirection="ltr">

<TextView
    android:id="@+id/item"
    android:layout_width="150px"
    android:layout_height="150px"
    android:layout_marginRight="50px"
    android:textColor="@android:color/black"
    android:textSize="10sp" />
</LinearLayout>

最后是适配器:

import android.app.Activity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;

import java.util.List;


public class CustomListAdapter extends BaseAdapter {

    private Activity context;
    private List<TextView> items;
    private static LayoutInflater inflater;

    public CustomListAdapter(Activity context, List<TextView> items) {

        this.context = context;
        this.items = items;
        inflater = (LayoutInflater)     context.getSystemService(context.LAYOUT_INFLATER_SERVICE);
    }


    @Override
    public int getCount() {
        return items.size();
    }

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

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

    public class Holder {
        TextView tv;
    }


    @Override
    public View getView(final int position, View convertView, ViewGroup parent) {
        inflater = context.getLayoutInflater();

        View rowView = inflater.inflate(R.layout.inventory_item, null);
        Holder holder = new Holder();

        holder.tv = (TextView) rowView.findViewById(R.id.item);
        holder.tv.setText(items.get(position).getText());
        holder.tv.setBackground(items.get(position).getBackground());
        holder.tv.setTextColor(items.get(position).getTextColors());

        return rowView;
    }


}

提前致谢。

1 个答案:

答案 0 :(得分:2)

  

只显示了4列中的1列

您需要使用:android:numColumns="4"

你的代码中的

 <GridView
    android:id="@+id/gridView"
    android:layout_width="match_parent"
    android:layout_height="300dp"
    android:layout_alignParentEnd="true"
    android:layout_alignParentTop="true"
    android:background="@color/color_white"
    android:columnWidth="100dp"
    android:gravity="center"
    android:horizontalSpacing="5dp"
    android:numColumns="4"
    android:padding="5dp"
    android:scrollbars="none|horizontal"
    android:stretchMode="columnWidth"></GridView>