我正在制作我的第一个Android应用程序,而这里是我被困的地方.
我有一个活动A,需要挑选4名玩家.
我将根据我想填写的玩家传递给活动PickPlayer 1,2,3,4.
ImageButton addp1 = (ImageButton)findViewById(R.id.player1);
addp1.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
Intent i = new Intent(getApplicationContext(), PickPlayer.class);
i.putExtra("playersList", playersList);
startActivityForResult(i, 1);
}
});
在PickPlayer活动中,我有一个填充的列表,每个项目都收到一个监听器.
final ArrayList playersList = (ArrayList)getIntent().getSerializableExtra("playersList");
lv.setAdapter(new PlayerItemAdapter(this, android.R.layout.simple_list_item_1, playersList));
lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView> adapter, View view, int position, long arg) {
player = playersList.get(position);
playersList.remove(position);
Intent intentMessage = new Intent();
intentMessage.putExtra("player", player);
intentMessage.putExtra("playersList", playersList);
setResult(RESULT_OK, intentMessage);
finish();
}
});`
通过在活动A上创建playersList并且每次将其从一个传递到另一个并且在点击时从玩家列表中移除玩家,上述工作正常.
问题是如果错误地选择了一个玩家,一旦被其他人替换,他需要再次被放回到列表中.
关于实施这个的任何建议?
我想到的一种方法是从活动A传递到PickPlayer玩家(如果已经在他的位置分配了一个玩家)并再次将他读回到玩家列表,但我确信有更好的方法.
我是android的新手,所以我不知道资源和最佳实践.
(示例通过活动或id传递对象并运行db查询).
谢谢
解决方法:
IMO,你将用单例类(或者在Application实例上的方法 – here一个关于它的良好stackoverflow问题)获得最佳结果.
你的数组将是单例的内部成员,并有一个布尔属性来指示玩家是否已经被选中.使用此属性的一些方法可以实现为:
>列表 getPickedPlayers()
>列表 getNotPickedPlayers()
> void setPlayerPicked(播放器播放器)
> void setPlayerNotPicked(播放器播放器)
>依此类推……
希望能帮助到你!
标签:java,android
来源: https://codeday.me/bug/20190609/1205749.html