android 操作girdview数据

我的main.xml里面有一个添加按钮,点击该按钮后,我希望在弹出的页面录入信息并将信息传送到main.xml,gridview添加一条tiem。如何实现呢。
main.xml
android:id="@+id/add"/>
android:id="@+id/grid"/>

add_dev.xml
<spinner
android:id = "@+id/selected"
<Button
android:id="@+id/add_ok"
item.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >
    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:gravity="center_horizontal"
        android:background="@drawable/yu">

        <LinearLayout
            android:orientation="horizontal"
            android:layout_width="match_parent"
            android:layout_height="wrap_content">

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="姓名"
                android:id="@+id/name"
                android:layout_weight="0.8"
                android:layout_gravity="center_vertical"
                android:textSize="16dp"
                android:layout_marginLeft="15dp"
                android:layout_marginTop="5dp"
                android:layout_marginBottom="5dp"
                android:textColor="@color/black" /> 
        </LinearLayout>

        <LinearLayout
            android:orientation="horizontal"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_marginBottom="5dp"
            android:background="@drawable/yu2">

            <LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:background="@drawable/yu3"
                android:layout_weight="0.55"
                android:layout_gravity="center_vertical">
                <ImageView
                    android:layout_width="wrap_content"
                    android:layout_height="match_parent"
                    android:layout_weight="0.6"
                    android:background="@null"
                    android:src="@drawable/tock"
                    android:layout_gravity="center_vertical"
                    android:layout_marginTop="5dp"
                    android:layout_marginBottom="5dp" />

                <ImageButton
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:id="@+id/tock_on"
                    android:layout_weight="1"
                    android:background="@drawable/tock_on"
                    android:layout_gravity="center_vertical" />

                <ImageButton

                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:id="@+id/tock_off"
                    android:layout_weight="1"
                    android:background="@drawable/tock_off"
                    android:layout_gravity="center_vertical" />

            </LinearLayout>
            <LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:gravity="center_vertical"
                android:layout_gravity="center_vertical">
                <ImageButton
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:id="@+id/voice"
                    android:layout_weight="1"
                    android:background="@drawable/vocie"
                    android:layout_gravity="center_vertical" />
            </LinearLayout>
        </LinearLayout>


    </LinearLayout>
</LinearLayout>

myadapter.java

 public class MyAdapter extends BaseAdapter {
    private LayoutInflater inflater;
    private final String layoutInflater = Context.LAYOUT_INFLATER_SERVICE;
    private Context mcontext;
    private static boolean flag =false;
    private List<dev_item> appList;
    private GridView myGridView;

    public MyAdapter( Context c,List<dev_item> list)
    {
        if (0 != dev_grp.dev_num) {
            appList= list;
        } else {
            appList= new ArrayList<dev_item>();
        }
        mcontext = c;
        inflater = (LayoutInflater)mcontext.getSystemService(layoutInflater);
    }
    public int getCount() {
        return dev_grp.dev_num;
    }

    public void addItem(dev_item  item) {//添加单项
        if (item != null) {
            appList.add(item);
            notifyDataSetChanged();   // 通知适配器数据已改变
        }
    }
    public void removeItem(int position) {//删除
        if (appList.get(position) != null) {
            appList.remove(position);
            notifyDataSetChanged();  // 通知适配器数据已改变
        }
    }

    public dev_item getItem(int position) {
        return appList.get(position);
    }
    public long getItemId(int position) {
        return dev_grp.dev_num;
    }
    public View getView(int position, View grid, ViewGroup parent)
    {

            int h = myGridView.getHeight() * 12 / 27;
            grid = LayoutInflater.from(mcontext).inflate(R.layout.activity_dev_tock_control, null);
            AbsListView.LayoutParams param = new AbsListView.LayoutParams(
                    ViewGroup.LayoutParams.FILL_PARENT, h);
            grid.setLayoutParams(param);

        return grid;
    }    
}

1个回答

理解adapter和gridview的呈现是依据后台绑定的数据源来的。要界面增加item,也就是绑定的数据对象增加item数据再刷新。
像你这getview很让人疑惑,这些有adapter都是根据数据驱动的。

danielinbiti
danielinbiti 回复凌云志轩: http://blog.csdn.net/pfe_nova/article/details/38500267这种,都是通过list来初始化,那么要添加新的数据,只要往list里面添加数据,然后刷新,对应的界面也就有了新的item了
5 年多之前 回复
llx2007
凌云志轩 谢谢
5 年多之前 回复
crazy1235
月盡天明 可以参考如下:http://blog.csdn.net/crazy1235/article/details/41775733
5 年多之前 回复
llx2007
凌云志轩 其实我想写的adapter很乱,因为我想直接添加数组,可是不知道该怎么添加,就乱了
5 年多之前 回复
llx2007
凌云志轩 girdview需要的数据直接从数据类中读取,怎么操作呢
5 年多之前 回复
llx2007
凌云志轩 刚开始做android,不是很懂。是这样的。我做了个数据类dev_item,我想将我添加的数据存到数据类中,gridview用arraylist<dev_item>来添加item,可是问题是我不知道数据类中的数据该如何保存,我可以直接在添加按钮中将这条信息写进去,然后在main页面直接读出来么?还是怎么操作呀?
5 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问