2013-12-05 2 views
0
<MenuByRole InstanceID="519" RoleID="614"> 
    <MainMenu Id="2298">Home</MainMenu> 
    <MainMenu Id="2431">My Results</MainMenu> 
    <MainMenu Id="2415">My Attendance</MainMenu> 
</MenuByRole> 

Это мой XML-файл, я получил все значения ID в этом XML-файле. Вот следующий код для того,Android XML с использованием SAX Parser

if (qName.equalsIgnoreCase("MainMenu")) 
     { 
     id = attributes.getValue("Id"); 
     MainMenu = true; 
    } 

Но я хочу, чтобы получить конкретное значение Id в соответствии с названием. Для примера, я хочу, чтобы получить значение идентификатора с помощью Главная имя здесь

+0

У меня есть имена, такие как «Домой», «Мои результаты», «Мой посетитель» в «Список», когда я нажимаю элемент «Список», чтобы получить его значение «ИД». Например, когда я нажал элемент Home List, мне нужно получить результат 2298. – Srinath

ответ

0
public class MainMenu { 
      private Long id; 
      private String Name; 

      public Long getId() { 
       return id; 
      } 

      public void setId(Long id) { 
       this.id = id; 
      } 

      public String getName() { 
       return Name; 
      } 

      public void setName(String name) { 
       Name = name; 
      } 

     } 

    ArrayList<MainMenu> munuIDList; 
     MainMenu oMainMenu; 
     boolean isReadData; 
     String sName; 
     @Override 
     public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException { 
      if(localName.equalsIgnoreCase("MenuByRole")){ 
       munuIDList = new ArrayList<MainMenu>(); 
       isReadData = false; 
      } 
      if(localName.equalsIgnoreCase("MainMenu")){ 
       isReadData = true; 
       oMainMenu = new MainMenu(); 
       oMainMenu.setId(attributes.getValue("Id")); 

      } 
     } 

     @Override 
     public void endElement(String uri, String localName, String qName) 
       throws SAXException { 
      if(localName.equalsIgnoreCase("MainMenu")) 
       oMainMenu.setName(sName); 
      sName = null; 
      isReadData = false; 
      } 
     } 
     @Override 
     public void characters(char[] ch, int start, int length) 
       throws SAXException { 
      if(isReadData) { 
      sName = new String(ch, start, length); 
      } 
    } 

MainActivity 
public class MainActivity extends Activity implements OnItemClickListener{ 
ArrayLsit<MainMenu> lstMainMenu; 
@Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
       myListView = (ListView) findViewById(R.id.myListView); 
       myListView.setOnItemClickListener(this); 
} 
} 

@Override 
    public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) { 
     // TODO Auto-generated method stub 
     Toast.makeText(MainActivity.this, lstMainMenu.get(arg2).getId(), Toast.LENGTH_SHORT).show(); 
    } 
+0

. Я отобразил имена, такие как «Главная», «Мои результаты», «Мой посетитель» в «Список», когда я нажимаю элемент «Список», который я должен получить его значение Id. Например, когда я нажал Home элемента списка, я должен получить 2298 как результат – Srinath

+0

@Srinath Ответ Обновлено – Basbous

+0

Null Пинтер Исключение показывает в LogCat – Srinath

1

Ниже полный синтаксический анализ кода .. Вы получите все ID от listMenuId и все имя из listMenuName

String currentValue = ""; 
String currentTag = ""; 
     ArrayList<String> listMenuId; 
     ArrayList<String> listMenuName; 

     // Called when tag starts 
     @Override 
     public void startElement(String uri, String localName, String qName,Attributes attributes) throws SAXException { 
      currentTag = localName; 
      if(currentTag.equalsIgnoreCase("MenuByRole")){ 
       listMenuId = new ArrayList<String>(); 
       listMenuName = new ArrayList<String>(); 
      } 
      if(currentTag.equalsIgnoreCase("MainMenu")){ 
       listMenuId.add(attributes.getValue("Id")); 
      } 
     } 

     // Called when tag closing 
     @Override 
     public void endElement(String uri, String localName, String qName) 
       throws SAXException { 
     } 

     // Called to get tag characters 
     @Override 
     public void characters(char[] ch, int start, int length) 
       throws SAXException { 
      currentValue = currentValue + new String(ch, start, length); 

      if(currentTag.equalsIgnoreCase("MainMenu")) 
       listMenuId.add(currentValue); 
      } 
    } 
+0

Вы можете использовать HashMap вместе с этим решением ... для пар значений ключа :) – AndroidDev

+0

Обновлен ответ, сейчас –

+0

Здесь я показываю Home , «Мои результаты», «Мой посетитель» в ListView, когда я нажимаю на элементе «Список», я хочу получить его значение идентификатора – Srinath

Смежные вопросы