-1
<NewDataSet>
<Table>
<Cust_Name>Dev</Cust_Name>
<Order_No>OR00000009</Order_No>
<Freight_Rate>68000</Freight_Rate>
<Station_Name>Chennai</Station_Name>
<Station_Name1>Kolkatta</Station_Name1>
</Table>
<Table>
<Cust_Name>FSL</Cust_Name>
<Order_No>OR00000010</Order_No>
<Freight_Rate>6000</Freight_Rate>
<Station_Name>Mumbai</Station_Name>
<Station_Name1>Pune</Station_Name1>
</Table>
<Table>
<Cust_Name>FSL</Cust_Name>
<Order_No>OR00000011</Order_No>
<Freight_Rate>7000</Freight_Rate>
<Station_Name>Mumbai</Station_Name>
<Station_Name1>Pune</Station_Name1>
</Table>
<Table>
<Cust_Name>FSL</Cust_Name>
<Order_No>OR00000012</Order_No>
<Freight_Rate>7000</Freight_Rate>
<Station_Name>Chennai</Station_Name>
<Station_Name1>Bangalore</Station_Name1>
</Table>
</NewDataSet>

如何在android中的gridview的一行中安排Cust_Name、Order_No、Freight_Rate等?

这是上述 XML 文件的确切链接

“http://54.251.60.177/StudentWebService/StudentDetail.asmx/GetTMSOrders”

参考来源

 public class GridSample extends Activity 
 {

// All static variables
static final String URL = "http://54.251.60.177/StudentWebService/StudentDetail.asmx/GetTMSOrders";
// XML node keys
static final String KEY_TABLE = "Table"; // parent node
static final String KEY_CUST = "Cust_Name";
static final String KEY_ORDER = "Order_No";
static final String KEY_FREIGHT = "Freight_Rate";

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    ArrayList<HashMap<String, String>> menuItems = new ArrayList<HashMap<String, String>>();

    XMLParser parser = new XMLParser();

    String xml = parser.getXmlFromUrl(URL); // getting XML

    Document doc = parser.getDomElement(xml); // getting DOM element

    NodeList nl = doc.getElementsByTagName(KEY_TABLE);

    // looping through all item nodes <item>

    for (int i = 0; i < nl.getLength(); i++) 
    {
        // creating new HashMap
        HashMap<String, String> map = new HashMap<String, String>();
        Element e = (Element) nl.item(i);
        // adding each child node to HashMap key => value
        map.put(KEY_CUST, parser.getValue(e, KEY_CUST));
        map.put(KEY_ORDER, parser.getValue(e, KEY_ORDER));
        map.put(KEY_FREIGHT,parser.getValue(e, KEY_FREIGHT));

        // adding HashList to ArrayList
        menuItems.add(map);
    }

    // Adding menuItems to ListView

    ListAdapter adapter = new SimpleAdapter(this, menuItems,
    R.layout.grid_item,new String[] { KEY_CUST, KEY_ORDER, KEY_FREIGHT }, 
    new int[] { R.id.name, R.id.desciption, R.id.cost });

    GridView gv = (GridView)findViewById(R.id.gridVi);
    gv.setAdapter(adapter);

    gv.setOnItemClickListener(new OnItemClickListener() 
    {

    public void onItemClick(AdapterView<?> parent, View view,
            int position, long id) 
    {
        // getting values from selected ListItem
        String name = ((TextView) view.findViewById(R.id.name)).getText().toString();
        String cost = ((TextView) view.findViewById(R.id.cost)).getText().toString();
        String description = ((TextView) view.findViewById(R.id.desciption)).getText().toString();

        // Starting new intent
        Intent in = new Intent(getApplicationContext(), SingleMenuItemActivity.class);
        in.putExtra(KEY_CUST, name);
        in.putExtra(KEY_ORDER, cost);
        in.putExtra(KEY_FREIGHT, description);
        startActivity(in);
        }
    });
}}

SingleMenuItemActivity.java

 public class SingleMenuItemActivity  extends Activity {

// XML node keys
static final String KEY_CUST = "Cust_Name";
static final String KEY_ORDER = "Order_No";
static final String KEY_FREIGHT = "Freight_Rate";
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.single_grid_item);

    // getting intent data
    Intent in = getIntent();

    // Get XML values from previous intent
    String cust = in.getStringExtra(KEY_CUST);
    String order = in.getStringExtra(KEY_ORDER);
    String freight = in.getStringExtra(KEY_FREIGHT);

    // Displaying all values on the screen
    TextView lblcust = (TextView) findViewById(R.id.cust_label);
    TextView lblorder = (TextView) findViewById(R.id.Order_label);
    TextView lblfreight = (TextView) findViewById(R.id.freight_label);

    lblcust.setText(cust);
    lblorder.setText(order);
    lblfreight.setText(freight);
}}

XMLParser.java

public class XMLParser 
{

// constructor
public XMLParser() 
{

}

/**
 * Getting XML from URL making HTTP request
 * @param url string
 * */

public String getXmlFromUrl(String url) 
{
    String xml = null;

    try 
    {
        // defaultHttpClient
        DefaultHttpClient httpClient = new DefaultHttpClient();
        HttpPost httpPost = new HttpPost(url);

        HttpResponse httpResponse = httpClient.execute(httpPost);
        HttpEntity httpEntity = httpResponse.getEntity();
        xml = EntityUtils.toString(httpEntity);

    }

    catch (UnsupportedEncodingException e) 
    {
        e.printStackTrace();
        }

    catch (ClientProtocolException e) 
    {
        e.printStackTrace();
        }

    catch (IOException e) 
    {
        e.printStackTrace();
        }

    // return XML

    return xml;
}

/**
 * Getting XML DOM element
 * @param XML string
 * */

public Document getDomElement(String xml)
{
    Document doc = null;
    DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();

    try 
    {

        DocumentBuilder db = dbf.newDocumentBuilder();
        InputSource is = new InputSource();

        is.setCharacterStream(new StringReader(xml));
        doc = db.parse(is); 

        } catch (ParserConfigurationException e) 
        {
            Log.e("Error: ", e.getMessage());
            return null;
        } catch (SAXException e) 
        {
            Log.e("Error: ", e.getMessage());
            return null;
        } catch (IOException e) 
        {
            Log.e("Error: ", e.getMessage());
            return null;
        }

        return doc;
}

/** Getting node value
  * @param elem element
  */

 public final String getElementValue( Node elem ) 
 {

 Node child;
 if( elem != null)
 {
  if (elem.hasChildNodes())
   {
     for( child = elem.getFirstChild(); child != null; child = child.getNextSibling() )
      {
        if( child.getNodeType() == Node.TEXT_NODE  )
          {
            return child.getNodeValue();
             }
           }
        }
    }
    return "";
}

 /**
  * Getting node value
  * @param Element node
  * @param key string
  * */
 public String getValue(Element item, String str) 
 {      
        NodeList n = item.getElementsByTagName(str);        
        return this.getElementValue(n.item(0));
    }}

非常感谢!..

4

1 回答 1

-1

您可以以水平方式设置您的 xml 文件布局,并尝试在该 gridview 中解析 xml

于 2012-09-05T06:01:35.640 回答