将内容从列表视图动态加载到另一个 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
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