从listview动态加载内容到另一个活动

时间:2015-01-13 06:56:45

标签: android json api listview

Android新手在这里。

场景

我正在使用我的网站api来填充Android ListView的数据 对于第一个屏幕,它被称为GameFragment。游戏片段从我的网站加载游戏url 我能够成功列出所有游戏。因此,我的下一步是在用户点击游戏时显示与游戏相关的所有文章。使用我的网站api http://www.gamerzwiki.com/api/news.json?game_id=qwert133(无论项目的ID是什么)

从网址加载内容

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上做到这一点。所以我想问你的专家建议

2 个答案:

答案 0 :(得分:1)

你可以做的是在listview上实现onClick监听器,它包含所有游戏: -

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");

现在您可以使用此ID在您的活动中进行网络服务调用,此处ItemClicked是您用于在所有游戏中填充列表视图的模型类

答案 1 :(得分: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