2012-04-25 4 views
2

Я не уверен, что название одобрено, но я попытаюсь объяснить его лучше.myActivity расширяет GridView реализует OnClickListener

Я хочу показать сетку в своем макете. Для этого я использую настраиваемый 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); 
} 

}

Witch я должен переопределить для выполнения onClickListener в каждой позиции?

ответ

4

impllement setOnItemClickListener для GridView нажмого:

@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 
      } 
     }); 
} 
+0

Я попробовал, что он компилирует, но никогда не работаю в метод inItemClick , – dnaranjo

+0

Если элемент управления не входит в элемент прослушивателя элементов, возможно, вы настроили clickable как true в своем макете. удалите клики из всего вашего вида из своего макета, а затем попробуйте. –

+0

Я проверил его, но нет никакого атрибута clickable, установленного true в моем layout_adapter, ни в layout_sala (основной) – dnaranjo

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; 
    } 
Смежные вопросы