将内容从列表视图动态加载到另一个 activity

load content dynamically from listview to another activity

Android这里是新手

场景

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

正在从 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 上做到这一点。所以想请教各位专家指教

您可以做的是在包含所有游戏的列表视图上实现 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);

  }
 });

在你的另一个 activity 中将其检索为:-

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

现在您可以使用此 ID 在您的 activity 中进行网络服务调用,这里的 ItemClicked 是您的模型 class,您正在使用它来将所有游戏填充到您的列表视图中

您可以在 intent 中使用 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);
}

在你的接收中activity这样做

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

您可以通过putExtra 传递基本数据类型。如果你想传递自定义对象,你必须实现 Parcelable http://developer.android.com/reference/android/os/Parcelable.html