2015-01-13 5 views
0

Android новичок здесь.динамически загружать контент из списка в другую деятельность

Сценарий

Я использую API моего веб-сайта, чтобы заполнить данные для Android ListView для первого экрана он называется GameFragment. Фрагмент игры загружает игры с моего сайта url Мне удалось успешно перечислить все игры. Таким образом, моим следующим шагом будет показать все статьи, связанные с игрой, когда пользователь нажимает на игру. Использование моих сайтов апи http://www.gamerzwiki.com/api/news.json?game_id=qwert133 (независимо идентификатор элемента есть)

Загрузка содержимого из URL

try { 
     JSONArray games = gp.loadGamesFromApi(); 
     ArrayList<Games> listData = new ArrayList<Games>(); 

     if(games != null){ 
      for(int x = 0 ; x<games.length() ; x++){ 
       JSONObject game = games.getJSONObject(x); 
       try { 
        Games game1 = new Games(); 
        game1.title=game.getString("title"); 
        game1.id = game.getInt("id"); 
        listData.add(game1); 
        //free game 1 
        game1 = null; 
       } catch (JSONException e) { 
        e.printStackTrace(); 
       } 
      } 
     } 
     ArrayAdapter<Games> adapter = new ArrayAdapter<Games>(getActivity(),android.R.layout.simple_list_item_1, listData); 
     setListAdapter(adapter); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } catch (JSONException e) { 
     e.printStackTrace(); 
    } 

поэтому у меня есть слушатель

@Override 
public void onListItemClick(ListView l, View v, int position, long id) { 
    Object item = l.getSelectedItem(); 

    Toast.makeText((Context)getActivity(),item.title.toString() , Toast.LENGTH_LONG).show(); 

    Intent intent = new Intent(v.getContext(), NewsActivity.class); 
    startActivity(intent); 
} 

но мне кажется, что я не могу получить атрибут предмета

но я не знаю, как это сделать на моем ListView. Поэтому я хотел бы попросить вашего эксперта посоветовать

+0

Вы хотите называть второй URL с идентификатором игры? – Mohan

+0

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

+0

ПОЛУЧИТЬ gamedi с помощью onItemClick слушателя и передать этот идентификатор на другой вид деятельности с помощью намерения – Mohan

ответ

1

что вы можете сделать, это реализовать OnClick слушателя на вашем ListView, который имеет все игры: -

listview.setOnItemClickListener(new OnItemClickListener(){ 
@Override 
public void onItemClick(AdapterView<?>adapter,View v, int position){ 

Games game = adapter.getItem(position); 

Intent intent = new Intent(Activity.this,destinationActivity.class); 
intent.putExtra("id",game.id); 
startActivity(intent); 

    } 
}); 

в вашей другой деятельности Отыщите как: -

String id=getIntent.getStringExtra("id"); 

и теперь вы можете использовать этот идентификатор, чтобы сделать WebService вызов в своей деятельности, здесь ItemClicked ваш класс модели, которые используют ваши, чтобы заполнить ваш ListView с всеми играми

+0

спасибо @Prmod Yadav, могу ли я передать объект в список? –

+0

вам нужно передать объект в действие или фрагмент, на котором размещается listview, а не на список, но из вашего веб-сервиса я думаю, что вам нужен только идентификатор, чтобы получить предметы для игры, поэтому почему вы хотите передать весь объект. –

+0

hmm Я не знаю, Мне жаль, что я так нуб. Можете ли вы привести мне пример? –

0

Вы можете передавать данные между различными видами деятельности, используя putExtra в намерении

@Override 
public void onListItemClick(ListView l, View v, int position, long id) { 
    Games item = adapter.getItem(position); 

    Intent intent = new Intent(v.getContext(), NewsActivity.class); 
    intent.putExtra("id", item.id); 
    startActivity(intent); 
} 

В вашей приемной деятельности это сделать

String id = getIntent().getStringExtra("id"); 

Вы можете передать основные типы данных через putExtra. Если вы хотите передать пользовательские объекты, вам необходимо будет реализовать Parcelable http://developer.android.com/reference/android/os/Parcelable.html

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