我必须使用 xml 解析来开发 android listview。,
我正在从 mysql 服务器获取 xml 提要。该产品被添加到日常活动中。
这里我需要 3 种列表视图:
1st view: Category
2nd view: SubCategory
3rd view: Product
在 fistview 中必须单独显示 Categoryname。
从我的 xml 提要第一个视图必须显示
单独的类别名称
在第二个视图中:
必须显示属于 Categoryname的subcategoryname 。
在第三视图中:
必须显示产品名称和价格属于子类别名称。
这是我的第一个视图代码:
public class MainActivity extends Activity {
static final String URL =http://api1.sfsfsfsf.com/dev/categories/?fields=&categoryid=3&access_token=bfb787a6e
static String KEY_CATEGORY = "category";
static final String KEY_TITLE = "categoryName";
static final String KEY_SUBCATE = "categoryId";
ListView lview3;
LazyAdapter adapter;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final ArrayList<HashMap<String, String>> songsList = new ArrayList<HashMap<String, String>>();
XMLParser parser = new XMLParser();
String xml = parser.getXmlFromUrl(URL); // getting XML from URL
Document doc = parser.getDomElement(xml); // getting DOM element
NodeList nl = doc.getElementsByTagName(KEY_CATEGORY);
// looping through all song nodes <song>
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);
map.put(KEY_TITLE, parser.getValue(e, KEY_TITLE));
map.put(KEY_SUBCATE, parser.getValue(e, KEY_SUBCATE));
songsList.add(map);
}
lview3 = (ListView) findViewById(R.id.listView1);
adapter = new LazyAdapter(this, songsList);
lview3.setAdapter(adapter);
lview3.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
HashMap<String, String> map = songsList.get(position);
Intent in = new Intent(
MainActivity.this,
com.example.androidcartxml.SubCate.class);
in.putExtra(KEY_TITLE, map.get(KEY_TITLE));
in.putExtra(KEY_SUBCATE, map.get(KEY_SUBCATE));
}
});
}
}
在这里,我在第一个视图中显示了类别列表。还将 categoryid 从第一个视图传递到第二个视图。
这是我的第二个视图代码:
public class SubCate extends Activity {
String mTitle;
static final String URL = "http://api1.sfsfsff.com/dev/categories/?fields=&categoryid="+mTitle+"&access_token=bfb787a6e11";
static String KEY_CATEGORY = "category";
static final String KEY_TITLE = "categoryName";
static final String KEY_NAME ="categoryId";
static final String KEY_SUBCATE = "categoryId";
ListView lview3;
ListViewCustomAdapter adapter;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.subcate);
Bundle b = getIntent().getExtras();
//String s= getIntent().getStringExtra("orderid");
mTitle = b.getString(KEY_SUBCATE);
TextView grandtotal = (TextView) findViewById(R.id.subcate);
grandtotal.setText("Welcome ," + mTitle );
final ArrayList<HashMap<String, String>> songsList = new ArrayList<HashMap<String, String>>();
// String key = getIntent().getStringExtra(KEY_TITLE);
XMLParser parser = new XMLParser();
String xml = parser.getXmlFromUrl(URL); // getting XML from URL
Document doc = parser.getDomElement(xml); // getting DOM element
NodeList nl = doc.getElementsByTagName(KEY_CATEGORY);
// looping through all song nodes <song>
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_TITLE, parser.getValue(e, KEY_TITLE));
map.put(KEY_NAME, parser.getValue(e, KEY_NAME));
songsList.add(map);
}
lview3 = (ListView) findViewById(R.id.listView1);
adapter = new ListViewCustomAdapter(this, songsList);
lview3.setAdapter(adapter);
lview3.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
HashMap<String, String> map = songsList.get(position);
Intent in = new Intent(
SubCate.this,
com.example.androidcartxml.Catalogue.class);
in.putExtra(KEY_TITLE, map.get(KEY_TITLE));
in.putExtra(KEY_NAME, map.get(KEY_NAME));
// in.putExtra(KEY_THUMB_URL, map.get(KEY_THUMB_URL));
//in.putExtra(KEY_PRICE, map.get(KEY_PRICE));
startActivity(in);
}
});
在第二个视图中显示了 categoryid 值,从第一个活动中获取它。但我不得不提到链接的 id 意味着没有得到子类别列表。请给我一些解决方案。
例如:
拿这是我的子类别链接:
[http://api1.sfsfsffsf.com/dev/categories/?fields=&categoryid=10&access_token=bfb787a6e1][1]
表示已显示子类别列表。
在这里,我必须将该类别 id 10(categoryid=10) 从第一个传递到第二个并将其保存到 textview 中。
mTitle = b.getString(KEY_SUBCATE);
TextView grandtotal = (TextView) findViewById(R.id.subcate);
grandtotal.setText("Welcome ," + mTitle );
我必须在我的链接上调用这些 mTitle 值,这意味着它不会显示在 subcategorylist 上。请帮助我。
[http://api1.sfsfsff.com/dev/categories/?fields=&categoryid="+mTitle+"&access_token=bfb787a6][2]
我的代码有什么问题。如何将 categoryid 调用到我的 url中。请给我解决方案。
编辑:
这是我的网址:
[http://api1.sfsfsfsf.com/dev/categories/?fields=&categoryid=10&access_token=bfb787a6e][3]
我已经直接提到 categoryid=10 表示已显示所有产品。
但我必须更改此网址,例如:
[http://api1.sfsfsf.com/dev/categories/?fields=&categoryid="+mTitle+"&access_token=bfb787a6e17][4]
Nw 我已经更改了我的 url,比如 categoryid="+mTitle+" 意味着不显示所有产品。
mTitle 价值来自我以前的活动。
我的代码有什么问题。
我的 mTitle 值是 10。我必须像手段一样编写代码
grandtotal.setText("Welcome ," + mTitle );
其显示的 mTitle 值成功。
grandtotal.setText("Welcome ," + URL );
意味着给了我空值