Android 如何在gridview中更改运行时的列数

Android 如何在gridview中更改运行时的列数,android,android-layout,gridview,Android,Android Layout,Gridview,我需要在运行时更改grid view dynamic中的列数…如图所示…我是android新手,不知道如何实现…实现要求…第一行中应该有两个图像,然后是三行中的列 这是我的代码 public class List_of_players extends Fragment implements OnItemClickListener { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container,

我需要在运行时更改grid view dynamic中的列数…如图所示…我是android新手,不知道如何实现…实现要求…第一行中应该有两个图像,然后是三行中的列

这是我的代码

public class List_of_players extends Fragment implements OnItemClickListener {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {

    View rootView = inflater.inflate(R.layout.list_of_players, container,
            false);
    GridView gridview = (GridView) rootView.findViewById(R.id.gridView1);
    gridview.setAdapter(new Customgrid(getActivity()));
    gridview.setOnItemClickListener(this);

    return rootView;
}

public class Customgrid extends BaseAdapter {
    private Context m1Context;

    public Customgrid(Context context) {
        super();
        this.m1Context = context;
    }

    @Override
    public int getCount() {
        // TODO Auto-generated method stub
        return 9;
    }

    @Override
    public Object getItem(int arg0) {
        // TODO Auto-generated method stub
        return null;
    }

    @Override
    public long getItemId(int arg0) {
        // TODO Auto-generated method stub
        return 0;
    }

    @Override
    public View getView(int arg0, View arg1, ViewGroup arg2) {
        LayoutInflater inflater = ((Activity) m1Context)
                .getLayoutInflater();
        View customRow1 = inflater.inflate(R.layout.players, null);
        return customRow1;
    }

}

@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
    // TODO Auto-generated method stub
    Intent intnt = new Intent(getActivity(), Players_details.class);
    startActivity(intnt);
}
public class List\u播放器扩展片段实现mclicklinklistener{
@凌驾
创建视图上的公共视图(布局、充气机、视图组容器、,
Bundle savedInstanceState){
视图根视图=充气机。充气(R.layout.list of_播放器、容器、,
假);
GridView GridView=(GridView)rootView.findviewbyd(R.id.gridView1);
setAdapter(新的Customgrid(getActivity());
setOnItemClickListener(this);
返回rootView;
}
公共类Customgrid扩展BaseAdapter{
私人语境;
公共自定义网格(上下文){
超级();
this.m1Context=context;
}
@凌驾
public int getCount(){
//TODO自动生成的方法存根
返回9;
}
@凌驾
公共对象getItem(int arg0){
//TODO自动生成的方法存根
返回null;
}
@凌驾
公共长getItemId(int arg0){
//TODO自动生成的方法存根
返回0;
}
@凌驾
公共视图getView(int arg0、视图arg1、视图组arg2){
排气充气器=((活动)m1Context)
.getLayoutInflater();
查看customRow1=充气机。充气(R.layout.players,null);
返回customRow1;
}
}
@凌驾
公共视图单击(AdapterView arg0、视图arg1、整型arg2、长型arg3){
//TODO自动生成的方法存根
Intent intnt=新的Intent(getActivity(),Players\u details.class);
星触觉(intnt);
}
}

这是xml文件

<GridView
    android:id="@+id/gridView1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="@drawable/gray"
    android:padding="10dp"
    android:numColumns="2"
    android:paddingBottom="10dp"
    android:paddingTop="10dp" >
</GridView>

我认为这根本不可能。GridView应该看起来像一个网格。 如果需要两个不同的行,请为此使用两种不同的布局:例如LinearLayout或GridView

<!--two columns row -->
<LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"/>

<!--three columns row-->
<LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"/>


在这种情况下,您可以动态更改每个版面内容,甚至行数。

您好,我也遇到了同样的问题。这可能会有帮助。。