我的GridView和gridview中的按钮有问题。这个想法是,用户点击网格的每个“项目”内的按钮,并弹出一个对话框,其中包含与该网格相关的文本(已经在textView中,但可见性设置为隐藏“。)
只有GridView内的第一个按钮才能正常工作,其余的只是“角色”。
这是 MyAdapter.java 类
public class MyAdapter extends BaseAdapter {
Context context;
ArrayList<Players> playerList;
private static LayoutInflater inflater = null;
Button btnRoleReveal;
public MyAdapter(Context context, ArrayList<Players> playerList){
this.context = context;
this.playerList = playerList;
inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
@Override
public int getCount() {
return playerList.size();
}
@Override
public Object getItem(int position) {
return position;
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null)
convertView = inflater.inflate(layout_grid_item, null);
final Button button = (Button) convertView.findViewById(R.id.btnRoleReveal);
TextView idTextView = (TextView) convertView.findViewById(R.id.tv_player_id);
TextView nameTextView = (TextView) convertView.findViewById(R.id.tv_player_name);
final TextView roleTextView = (TextView) convertView.findViewById(R.id.tv_player_role);
final String role = roleTextView.getText().toString();
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
new AlertDialog.Builder(context)
.setTitle("Test")
.setMessage(role)
.show();
}
});
Players p = new Players();
p = playerList.get(position);
idTextView.setText("ID: " + String.valueOf(p.getId()));
nameTextView.setText("Name: " + String.valueOf(p.getName()));
roleTextView.setText("Role: " + String.valueOf(p.getRole()));
return convertView;
}
}
我已经读过我可能需要以编程方式添加按钮,但我不知道如何处理这个问题。如果您需要查看任何其他代码或有任何建议,请告诉我们。
谢谢
答案 0 :(得分:0)
确保以下行符合您的要求。我怀疑这是因为1)数据来自刚创建的视图,或者2)数据是从转换后的视图中获取的,数据是什么?无论role
将来如何变化,您的对话框都将反映TextView
的所有内容。
final TextView roleTextView = (TextView) convertView.findViewById(R.id.tv_player_role);
另外,请查看其余代码。此行无效,因为您立即替换p
:
Players p = new Players();
是否要在此处设置其他值,或者是否要在button.setOnClickListener()
之前设置它们,以便role
设置为对话框所需的值?您可能需要考虑将这些内容移至getView()
的开头。
p = playerList.get(position);
idTextView.setText("ID: " + String.valueOf(p.getId()));
nameTextView.setText("Name: " + String.valueOf(p.getName()));
roleTextView.setText("Role: " + String.valueOf(p.getRole()));
我希望这会有所帮助。 (顺便说一句,你不需要以编程方式添加按钮。)