如何在android中为网格视图设置一行? [英] How to set a row for grid-view in android?

查看:20
本文介绍了如何在android中为网格视图设置一行?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

现在我正在将 XML 文件中的数据显示到 android 中的网格视图中.这是确切的 xml 文件链接

Right now i am displaying the data from XML file in to grid view in android.This is the exact xml's file link

"http://54.251.60.177/StudentWebService/StudentDetail.asmx/GetTMSOrders" 其中我正在尝试展示.我已经成功地完成了这个概念,但问题是,我没有得到如下图所示的答案

"http://54.251.60.177/StudentWebService/StudentDetail.asmx/GetTMSOrders" which i am trying to show.I have done that concept successfully, but here the problem is,i am not getting the answer like the below image

我需要在android中显示如下图

i need to show like the below image, in android

但我只喜欢下图.....

but i am getting only like the below image.....

如何克服这个概念?谁能帮我解释清楚?

How to overcome this concept?can any one please make me clear?

感谢您的宝贵时间!...

thanks for your precious time!..

这里是我的资源供参考,请找到

Here my sources for reference,please find

GridviewSample.java

public class GridviewSample 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";
static final String KEY_STATION1 = "Station_Name";
static final String KEY_STATION2 = "Station_Name1";

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

    GridView gv =  (GridView)findViewById(R.id.gridView1);

    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));
        map.put(KEY_STATION1, parser.getValue(e, KEY_STATION1));
        map.put(KEY_STATION2, parser.getValue(e, KEY_STATION2));

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

    // Adding menuItems to ListView

 SimpleAdapter adapter = new SimpleAdapter(this, menuItems,R.layout.grid_item,
 new String[] { KEY_CUST, KEY_ORDER, KEY_FREIGHT,KEY_STATION1,KEY_STATION2 }, new int[] 
 {
    R.id.cust, R.id.order, R.id.freight,R.id.statio1,R.id.station2 });


    gv.setAdapter(adapter);

    gv.setOnItemClickListener(new OnItemClickListener() 
    {

    public void onItemClick(AdapterView<?> Table, View v,int position, long id) 
    {


    String cust = ((TextView) v.findViewById(R.id.cust)).getText().toString();
    String order = ((TextView) v.findViewById(R.id.order)).getText().toString();
    String freight = ((TextView) v.findViewById(R.id.freight)).getText().toString();
    String station1 = ((TextView) v.findViewById(R.id.statio1)).getText().toString();
    String station2 = ((TextView) v.findViewById(R.id.station2)).getText().toString();

    // Starting new intent

    Intent in = new Intent(getApplicationContext(), Single_gridview_item.class);

      in.putExtra(KEY_CUST, cust);
      in.putExtra(KEY_ORDER, order);
      in.putExtra(KEY_FREIGHT, freight);
      in.putExtra(KEY_STATION1, station1);
      in.putExtra(KEY_STATION2, station2);
      startActivity(in);
      }
    }); 
}   }

Single_gridview_item

public class Single_gridview_item  extends Activity
{

// XML node keys

static final String KEY_TABLE = "Table"; // parent node
static final String KEY_CUST_NAME = "Cust_Name";
static final String KEY_ORDER = "Order_No";
static final String KEY_FREIGHT = "Freight_Rate";
static final String KEY_STATION1 = "Station_Name";
static final String KEY_STATION2="Station_Name1";

@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_NAME);
    String order = in.getStringExtra(KEY_ORDER);
    String freight = in.getStringExtra(KEY_FREIGHT);
    String station1 = in.getStringExtra(KEY_STATION1);
    String station2 = in.getStringExtra(KEY_STATION2);

    // 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);
    TextView lblstation1 = (TextView) findViewById(R.id.station1_label);
    TextView lblstation2 = (TextView) findViewById(R.id.station2_label);

    lblcust.setText(cust);
    lblorder.setText(order);
    lblfreight.setText(freight);
    lblstation1.setText(station1);
    lblstation2.setText(station2);
}}

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));
    }}

推荐答案

不要使用网格视图,它不会帮助你.它旨在将项目列表显示为网格.您可以指定列数,但显示表格更像是 TableLayout 的工作.

Don't use a grid view, it won't help you. It is designed to display a list of items as a grid. You may specify the number of columns, but displaying a table is more of a job for a TableLayout.

这篇关于如何在android中为网格视图设置一行?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆