2017-04-05 8 views
0

グリッドビュー内のグリッドビューとボタンに問題があります。アイデアは、グリッドの各「項目」内のボタンをクリックし、ダイアログボックスにそのグリッドに関連するテキストが表示されます(これは既にtextViewにありますが、可視性は非表示に設定されています)。GridViewボタン、そのうちの1つだけが動作しています

GridViewの内側だけが最初のボタンは、残りはちょうど「役割」を読んで正しく動作します。ここで

である私は、プログラムが、私のボタンを追加する必要があります読んだことが

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; 
} 


} 

MyAdapter.javaクラスこれにアプローチする方法がわかりません。追加のコードを参照する必要がある場合や提案がある場合は、pl簡単に私に知らせてください。

答えて

0

は、次の行はあなたが欲しい欲しい与えていることを確認してください、ありがとうございました。 1)データが作成されたビューから取得されたか、または2)変換されたビューからデータが取得され、そのデータが何であるか、 TextViewが今後どのように変更されるかにかかわらず、ダイアログにはroleが反映されます。

final TextView roleTextView = (TextView) convertView.findViewById(R.id.tv_player_role); 

また、残りのコードを見てください。この行は、あなたがすぐにpを交換するので、便利ではありません。

Players p = new Players(); 

あなたはここに他の値を設定するか、roleは、ダイアログのために必要な値に設定されているようにbutton.setOnClickListener()前にそれらを設定したいですか?これらを最初の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())); 

これが役立ちます。 (btw、プログラムでボタンを追加する必要はありません)

関連する問題