gpt4 book ai didi

android - 如何将信息传递到自定义 ArrayAdapter 的 getView 中?

转载 作者:行者123 更新时间:2023-11-30 03:21:32 27 4
gpt4 key购买 nike

我的应用程序中有以下类:

public class Player implements Parcelable {
private String name;
private int playerColor;
private int[] scores;
...
}

我如何告诉我的 ArrayAdapter 的 getView 方法在关联的 ListView 中显示得分数组的哪个元素?我想根据 Activity 中的信息在 ListView 中显示 player.name 字段以及 player.scores 数组的特定元素。

public class PlayerGameAdapter extends ArrayAdapter<Player> {
private ArrayList<Player> entries;
private Activity activity;

public PlayerGameAdapter(Activity a, int viewResourceId, ArrayList<Player> entries) {
super(a, viewResourceId, entries);
this.entries = entries;
this.activity = a;
}

public static class ViewHolder {
public Button buttonName;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
View v = convertView;
ViewHolder holder;
if (v == null) {
LayoutInflater vi =
(LayoutInflater) activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v = vi.inflate(R.layout.listview_row_player_game, null);
holder = new ViewHolder();
holder.buttonName = (Button) v.findViewById(R.id.buttonGamePlayerListName);
v.setTag(holder);
} else
holder = (ViewHolder) v.getTag();

final MiniGolfPlayer player = entries.get(position);
if (player != null) {
holder.buttonName.setText(player.getName() + " - " + player.scores[ELEMENT]);
}
return v;
}

最佳答案

将位置变量添加到您的玩家类。

public class Player implements Parcelable {
private String name;
private int playerColor;
private int[] scores;
private int position; // also add the get and set methods
}

在您的 Activity 中,您可以更改要为每个玩家单独显示的分数的位置。

((Player)entries.get(0)).setPosition(AnyValueYouWant);
((Player)entries.get(1)).setPosition(AnotherValue);

然后通知您的适配器刷新 ListView :

PlayerGameAdapter.notifyDataSetChanged();

这对你有用吗?或者你期待别的东西。

关于android - 如何将信息传递到自定义 ArrayAdapter 的 getView 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19037243/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com