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