Проблема с виджетом в панели просмотра - PullRequest
1 голос
/ 12 февраля 2012

Мое приложение включает в себя анализ 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);
        } }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...