如何在android中为网格视图设置一行? [英] How to set a row for grid-view in 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屋!