2015-02-14 7 views
1

У меня есть Listadapter, в котором есть 4 разных строки и их сохранение в моем списке. Теперь я хочу получить все элементы из одной из этих строк и проанализировать их на «дату», поэтому как я могу заполнить даты календаря из своего списка?Как получить элементы из Listadapter в Android?

После кодов:

// Get User records from SQLite DB 
    ArrayList<HashMap<String, String>> eventsList = controller.getAllevents(); 
    // If users exists in SQLite DB 
    if (eventsList.size() != 0) { 
     // Set the User Array list in ListView 
     ListAdapter adapter = new SimpleAdapter(CalendarActivity.this, eventsList, R.layout.calendar_event_list, new String[]{TAG_PID, 
       TAG_EVENTTITLE,TAG_EVENTSTART,TAG_EVENTEND}, 
       new int[]{R.id.pid, R.id.eventname, R.id.eventstart, R.id.eventend}); 
     ListView myList = (ListView) findViewById(android.R.id.list); 
     myList.setAdapter(adapter); 

     String eventstart = adapter.toString(); //I got null exception here.. 

     Date edate = ParseDate(eventstart); 

     if (caldroidFragment != null) { 

      caldroidFragment.setBackgroundResourceForDate(R.color.Green, edate); 
      caldroidFragment.refreshView(); 
     } 
    } 

ответ

1

Если вы хотите, чтобы извлечь элемент из адаптера вы можете использовать

adapter.getItem(position); 

, который возвращает элемент в указанной позиции. В вашем случае, этот метод возвращает HashMap<String, String> в указанной позиции:

Пример:

/* adapter.getCount() returns the count of how many items 
    (HashMaps, in your case) that is represented in this adapter. */ 
for(int i = 0; i < adapter.getCount(); i++){ 
    HashMap<String, String> myHashMap = adapter.getItem(i); 
    //"myKey" is the key that you provided, when mapping your key-values 
    String myVal = myHashMap.get("myKey"); 
    Date edate = ParseDate(myVal); 
    /* Handle your Date object here. I'm just printing it to the console 
     in this example. */   
    System.out.println("Item at position " + i + " " + edate.toString()); 
} 
+0

Я использую 'String eventstart = (String) adapter.getItem (2);' он дает ошибку говоря: «java.util.HashMap нельзя использовать для java.lang.String», как это решить? –

+0

@JessIanSefulan Проверьте мои изменения. 'adapter.getItem (2)' возвращает 'HashMap', а не' String'. Вы должны получить свои значения из возвращенного 'HashMap' – Marcus

+0

Невозможно разрешить положение символа. Должен ли я объявить его сначала как целое? –

0

проблема решена! Просто просто введите внутри цикла и измените переменную «position» в переменную, которая обрабатывает цикл, например for (int i = 0; i < eventsList.size(); i++) change adapter.getItem(position) to adapter.getItem(i)

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