Mo *_*tel 5 java android android-widget
我看过Android - 如何更新当前显示的ListView项目和http://commonsware.com/Android/excerpt.pdf以及Android文档,但我仍然不明白.
我的问题:
使用处理程序,我正在尝试更新我从一个从MySQL数据库中检索数据的Web服务填充的Stock数据多列列表视图.为了更新列表视图,我正在调用一个servlet,它返回一个我使用DOM循环的XML.
我找不到一种将新数据(从XML)应用到Listview的工作方式,尽管只需要更新第三列(贸易列).此外,当我尝试从ListView行转换视图时,我得到一个NullPointerException并且无法找出原因.
我到目前为止所做的代码如下.
java代码:
private void updateUI() throws Exception
{
Date dt = new Date();
int hours = dt.getHours();
int minutes = dt.getMinutes();
int seconds = dt.getSeconds();
String curTime = hours + ":" + minutes + ":"+ seconds;
refreshHandler.sleep(60000);
ListView listview = (ListView) findViewById(R.id.listview);
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document doc = db.parse("http://10.0.0.29:8080/CI3500/FTSEXML");
//Filter and store ALL 'update' XML elements into node array
NodeList nodeList = doc.getElementsByTagName("update");
View v = null;
TextView t = null;
Adapter adapter = listview.getAdapter();
for (int i = 0; i < adapter.getCount(); i++)
{
v = listview.getChildAt(i);
t = (TextView)v.findViewById(R.id.item2);
String companyCode = t.getText().toString(); //Column 1
for(int j = 0; j < nodeList.getLength(); j++)
{
if(companyCode == nodeList.item(j).getFirstChild().getNodeValue())
{
//TODO Update Listview Code
}
}
}
txtStatus.setText(String.valueOf("Last Update: " + curTime));
}
Run Code Online (Sandbox Code Playgroud)
列表视图映射如下:
// create the grid item mapping
String[] columns = new String[] {"col_1", "col_2", "col_3" };
int[] rows = new int[] { R.id.CodeColumn, R.id.NameColumn, R.id.TradeColumn };
Run Code Online (Sandbox Code Playgroud)
Dmi*_*nko 12
您应该实现自己的ListView适配器,它将向列表视图提供数据.从适配器调用notifyDataSetChanged()将强制列表视图从适配器获取数据.直接更新列表视图视图看起来很奇怪
归档时间: |
|
查看次数: |
12580 次 |
最近记录: |