Мое приложение включает в себя анализ XML-файла онлайн, который содержит данные об отелях (название, адрес, категория), но когда я пытаюсь управлять шкалой звездного рейтинга, определенной для категории отелей 1 звезда, 2 звезды ... успешный.
Сначала посмотрите на мой XML-файл:
<hotels count="2">
<hotel>
<name>el mouradi</name>
<place>hammamet</place>
<category>5</category>
</hotel>
<hotel>
<name>caralton</name>
<place>tunis</place>
<category>4</category>
</hotel>
</hotels>
Это мой класс в Main.java. Я мог бы импортировать данные XML-файла в виде таблицы, а затем без проблем просмотреть данные в виде строки в представлении списка:
package com.hotel.tn;
import java.util.ArrayList;
import java.util.HashMap;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
import com.pxr.tutorial.xmltest.R;
import android.app.ListActivity;
import android.os.Bundle;
//import android.widget.Button;
import android.widget.ListAdapter;
import android.widget.ListView;
//import android.widget.RatingBar;
import android.widget.SimpleAdapter;
import android.widget.Toast;
public class Main extends ListActivity {
private ListView list;
/** Called when the activity is first created.
* @param stars */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.listplaceholder);
list = getListView();
ArrayList<HashMap<String, String>> mylist = new ArrayList<HashMap<String, String>>();
String xml = XMLfunctions.getXML();
Document doc = XMLfunctions.XMLfromString(xml);
int numResults = XMLfunctions.numResults(doc);
if((numResults <= 0)){
Toast.makeText(Main.this, "pas de resultas", Toast.LENGTH_LONG).show();
finish();
}
NodeList nodes = doc.getElementsByTagName("hotel");
for (int i = 0; i < nodes.getLength(); i++) {
HashMap<String, String> map = new HashMap<String, String>();
Element e = (Element)nodes.item(i);
map.put("cat", XMLfunctions.getValue(e, "categorie"));
map.put("nom",XMLfunctions.getValue(e, "nom"));
map.put("adr",XMLfunctions.getValue(e, "adr"));
mylist.add(map);
}
ListAdapter adapter = new SimpleAdapter(this,mylist,R.layout.main,
new String[]{"nom","adr","cat"},
new int[] { R.id.item_title, R.id.item_subtitle,R.id.item_su});
list.setAdapter(adapter);
}}
Это Listeadapter.java.
Eclipse показывает мне следующую ошибку: «метод get int в списке не применим для строки аргумента» в этой строке rating.setRating (List.get ("cat")
.
Если я попытаюсь заменить "cat"
целым числом в строке List.get("cat")
, я могу запустить приложение, но строка рейтинга не изменится. Что может быть не так?
package com.hotel.tn;
//import android.app.ListActivity;
import java.util.List;
import java.util.Map;
import com.pxr.tutorial.xmltest.R;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.RatingBar;
import android.widget.SimpleAdapter;
public class Listeadapter extends SimpleAdapter {
private LayoutInflater mInflater;
public Listeadapter (Context context, List<? extends Map<String, ?>> data,
int resource, String[] from, int[] to)
{
super (context, data, resource, from, to);
mInflater = LayoutInflater.from (context);
}
public Object getItem (int position)
{
return getItem (position);
}
@Override
public View getView (int position, View convertView, ViewGroup parent){
if (convertView == null){
// holder = new ViewHolder();
convertView = mInflater.inflate (R.layout.main, null);
// holder.
RatingBar rating = (RatingBar)convertView.findViewById(R.id.rating);
rating.setRating(List.get(cat));/*or rating.setRating(2); dont work **/
rating.setTag (position);
// convertView.setTag(holder);
}
return super.getView (position, convertView, parent);
} }