2

タイトルが適切かどうかはわかりませんが、より適切に説明しようとします。

レイアウトにグリッドを表示したい。そのために、カスタム ArrayAdapter を使用しています。onClickListener を各項目に設定する方法がわかりません...

レイアウトには、名前を表示するためのラベルとグリッドビューが含まれています。

これは私の活動です:

public class Sala extends Activity{
GridView gridView;
TextView label_name;

ArrayList<String> lista_opciones = new ArrayList<String>();  

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.layout_sala);
    //Refresh the name in the label
    Bundle bundle=getIntent().getExtras();
    String name= bundle.getString("name");
    label_name= (TextView) findViewById(R.id.label_name);
    label_name.setText(name);

    //Loading array
    lista_op.add("Op 1");  
    lista_op.add("Op 2");  
    lista_op.add("Op 3");  
    lista_op.add("Op 4"); 

    //AdaptadorOpciones
    ArrayAdapterOpciones mAdapter = new ArrayAdapterOptions(this,lista_op);  

    //Set the customAdapter to the grid
    gridView = (GridView) findViewById(R.id.grid); 
    gridView.setAdapter(mAdapter);  
}

}

各アイテムに onClickListener を実装するには、魔女のメソッドをオーバーライドする必要がありますか?

4

2 に答える 2

4

グリッドビュー項目クリックの実装 setOnItemClickListener:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.layout_sala);
    //Refresh the name in the label
    Bundle bundle=getIntent().getExtras();
    String name= bundle.getString("name");
    label_name= (TextView) findViewById(R.id.label_name);
    label_name.setText(name);

    //Loading array
    lista_op.add("Op 1");  
    lista_op.add("Op 2");  
    lista_op.add("Op 3");  
    lista_op.add("Op 4"); 

    //AdaptadorOpciones
    ArrayAdapterOpciones mAdapter = new ArrayAdapterOptions(this,lista_op);  

    //Set the customAdapter to the grid
    gridView = (GridView) findViewById(R.id.grid); 
    gridView.setAdapter(mAdapter);  
    gridView.setOnItemClickListener(new OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View v, int position, long id) {

                //Do stuff here
            }
        });
}
于 2012-04-25T01:25:13.350 に答える
0

Adapter.getView 実装にリスナーを追加できます。

    @Override       
    public View getView(int position, View convertView, ViewGroup parent) {
        ImageView button = (ImageView) convertView;
        if (button == null) {
            button = new ImageButton(); // or whatever
            button.setOnClickListener(this);
        }
        button.setId(ids_present.get(position));
        return button;
    }
于 2012-04-25T01:25:48.153 に答える