2015-04-28 1 views
0

У меня есть данные А ListView загрузки проекта из XML-файлановый Intent с ListAdapter

for (int i = 0; i < nlProject.getLength(); i++) { 

      // Neue HashMap erstellen 
      HashMap<String, String> map = new HashMap<String, String>(); 
      Element e = (Element) nlProject.item(i); 

      // Jedes Kind-Knoten zur HashMap 
      map.put(KEY_UUID, parser.getValue(e, KEY_UUID)); 
      map.put(KEY_NAME, parser.getValue(e, KEY_NAME)); 
      map.put(KEY_JOBTITLE, parser.getValue(e, KEY_JOBTITLE)); 
      map.put(KEY_JOBINFO, parser.getValue(e, KEY_JOBINFO)); 
      map.put(KEY_PROJECT_IMAGE, parser.getValue(e, KEY_PROJECT_IMAGE)); 


      //Hashmap zur ArrayList hinzufügen 
      menuItems.add(map); 
     } 

     ListAdapter adapter = new SimpleAdapter(ListViewActivity.this, menuItems, 
       R.layout.list_item_projects, 
       new String[]{KEY_JOBTITLE, KEY_JOBINFO}, 
       new int[]{R.id.jobtitle, R.id.jobinfo}); 

     setListAdapter(adapter); 

, если я нажму на элемент Я хочу, чтобы загрузить новое окно отображения мои задачи-данные

Вот код:

public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 


    //Neue Oberfläche starten 
    Intent in = new Intent(ListViewActivity.this, ListMenuItemActivity.class); 
    in.putExtra(KEY_TITLE,"title"); 
    in.putExtra(KEY_INFO,"info"); 
    in.putExtra(KEY_LOCATION, "location"); 
    startActivity(in); 


    ListAdapter taskadapter = new SimpleAdapter(this, menuItems, 
      R.layout.list_item_tasks, 
      new String[]{KEY_TITLE, KEY_INFO, KEY_OBJECT, KEY_LOCATION}, 
      new int[]{R.id.title, R.id.info, R.id.object, R.id.location}); 

    setListAdapter(taskadapter); 

проблема заключается в том, что изменить ListAdapter (адаптер) для taskadapter вместо создания нового вида деятельности/намерения

Как я могу решить эту проблему?

+0

Почему вы меняете адаптер в методе щелчка после начала нового действия – M090009

+0

о, это неправильно. он должен быть обратным. сначала сменив адаптер, а затем новую активность. –

+0

Итак, почему вы меняете адаптер, если собираетесь перейти к другому действию? – M090009

ответ

0

Вы можете добавить массив строк в качестве дополнительного, используя метод putStringArrayList(String key, ArrayList<String> value); например,

ArrayList<String> stringArray = new ArrayList<String>(); 
stringArray.add("The String value you want"); 
stringArray.add("Another String value you want"); 

И для массива Int, используя метод putIntArray(String key, int[] value) также проверить эту Ли link для справки о EXTRA полей.

+0

спасибо! –

+0

Вы наиболее востребованы :) – M090009

+0

in.putStringArrayListExtra ("stringArray", ArrayList KEY_TITLE); Что-то не хватает, и я не знаю, что:/ –

1

Как уже было сказано в комментариях, вы должны написать только код для открытия этой операции.

public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 


    //Neue Oberfläche starten 
    Intent in = new Intent(ListViewActivity.this, ListMenuItemActivity.class); 
    in.putExtra(KEY_TITLE,"title"); 
    in.putExtra(KEY_INFO,"info"); 
    in.putExtra(KEY_LOCATION, "location"); 
    startActivity(in); 
}); 

Вы можете установить адаптер списка в новой деятельности

ListAdapter taskadapter = new SimpleAdapter(this, menuItems, 
      R.layout.list_item_tasks, 
      new String[]{KEY_TITLE, KEY_INFO, KEY_OBJECT, KEY_LOCATION}, 
      new int[]{R.id.title, R.id.info, R.id.object, R.id.location}); 

    setListAdapter(taskadapter); 

Надеется, что это помогает ...

+0

Проблема заключается в том, что он не может найти элементы меню и строки, потому что это в моем ListViewActivity. ListAdapter должен быть в новом праве на действие? в этом случае в моем ListMenuItemActivity? –

+0

Да, очевидно :) –

+0

Как я могу получить доступ к элементам меню и к обоим массивам? :/ –