将从Web服务获取的文本添加到网格视图

时间:2014-02-14 08:20:57

标签: android xml web-services android-layout gridview

我正在开发一个应用程序,我在其中定义了布局中的网格视图。我没有提供任何背景图片。我只是给出了背景色。 我要添加的数据是从 webservice 获取的。如果数据不大,则必须自动在网格字段中进行调整。但是当我添加数据时,它不会被添加。它只是在我的相对布局中显示为单行。 我是android的新手。请帮助我。

这是从Web服务获取数据并添加到网格的方法。

private void callService()
    {           
        ArrayList<String> devices;
        devices=new ArrayList<String>();
        ODataConsumer con=ODataJerseyConsumer.create("url of the webservice");
        List<OEntity> listEntities = con.getEntities("Devices").execute().toList();
        if (listEntities.size() > 0)
           {

                       for (OEntity entity : listEntities)
                       {

                           devices.add(entity.getProperty("Name").getValue().toString()+ " - "

                                   + entity.getProperty("AliasName").getValue()

                                           .toString());
                       }

             }
         ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
                 android.R.layout.simple_list_item_1,devices );
         grid.setAdapter(adapter);

     }

任何人都可以帮我解决这个问题。我是android的新手,所以我可能会犯愚蠢的错误。

这是我的xml布局

    <?xml version="1.0" encoding="utf-8"?>

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/arcontroller"
android:layout_width="match_parent"
android:layout_height="match_parent" >

<ImageButton
    android:id="@+id/cancelbutton"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentTop="true"
    android:layout_alignParentRight="true"
    android:background="@android:color/transparent"
    android:onClick="onButtonClick"
    android:src="@drawable/cancel" />

<GridView 
    android:id="@+id/tabledisplay"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:numColumns="2"
    android:layout_centerInParent ="true"
    android:gravity="center_horizontal"
    android:layout_marginTop="150dp"
    android:verticalSpacing="0dp"
    android:horizontalSpacing="0dp"
    android:stretchMode="columnWidth"
    android:background="@color/peach"

    >
</GridView>
<Button 
    android:id="@+id/page4" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="@string/Page4"
    android:textSize="20sp"
    android:layout_alignParentBottom="true"
    android:layout_alignParentRight="true"
    android:onClick="page4ButtonClick" />
<Button 
    android:id="@+id/page3" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="@string/Page3"
    android:textSize="20sp"
    android:layout_alignParentBottom="true"
    android:layout_toLeftOf="@+id/page4"
    android:onClick="page3ButtonClick" />
<Button 
    android:id="@+id/page2" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="@string/Page2"
    android:textSize="20sp"
    android:layout_alignParentBottom="true"
    android:layout_toLeftOf="@+id/page3" 
    android:onClick="page2ButtonClick"/>
<Button 
    android:id="@+id/page1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="@string/Page1"
    android:textSize="20sp"
    android:layout_alignParentBottom="true"
    android:layout_toLeftOf="@+id/page2"
    android:onClick="page1ButtonClick" />

    </RelativeLayout>

1 个答案:

答案 0 :(得分:0)

在向适配器添加或设置项目后调用adapter.notifyDataSetChanged()

我怀疑你是从UI线程以外的线程调用你的callService方法,因为你说你从Web服务获取数据。如果是这种情况,您应该在UI线程上调用notifyDataSetChanged。这有助于:

runOnUiThread(new Runnable() {

    @Override
    public void run() {
        adapter.notifyDataSetChanged();
    }
});