Android Gridview y el botón OnItemclick
Aquí está mi clase buttonAdapter que creo que es precisa:
package com.example.test; import android.content.Context; import android.graphics.Color; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.Button; import android.widget.GridView; public class ButtonAdapter extends BaseAdapter { private Context mContext; public String [] fName = { "File 1", "File 2", "Roflcopters"}; // Gets the context so it can be used later public ButtonAdapter(Context c) { mContext = c; } // Total number of things contained within the adapter public int getCount () { return 8; } // Require for structure, not really used in my code. public Object getItem (int position) { return null; } // Require for structure, not really used in my code. Can be used to get the id of an item in the adapter for manual control. public long getItemId (int position) { return position; } public View getView (int position, View convertView, ViewGroup parent){ Button btn; if (convertView == null) { // if it's not recycled, initialize some attributes btn = new Button (mContext); btn.setLayoutParams (new GridView.LayoutParams (190, 190)); btn.setPadding (1, 1, 1, 1); } else { btn = (Button) convertView; } // btn.setText(filesnames[position]); // filenames is an array of strings //btn.setTextColor (Color.WHITE); //btn.setBackgroundResource (R.drawable.sample_2); //btn.setBackgroundColor (Color.BLACK); btn.setHighlightColor(Color.GREEN); btn.setId (position); return btn; } }
Aquí está mi clase en casa. No puedo conseguir que el onItemClick funcione. Qué estoy haciendo mal aquí:
- Haga clic en largo Haga clic en span no disparar hasta que se haga clic
- SetOnItemClickListener VS setOnItemSelectedListener en ListView.
- OnItemClickListener no se activa en Android GridView
- Cuando agrego una vista a un elemento ListView, este elemento reacciona ya no correctamente
- El elemento ListView no se puede hacer clic en Android
package com.example.test; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.Menu; import android.view.View; import android.view.View.OnClickListener; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.GridView; import android.widget.Toast; public class home extends Activity implements OnItemClickListener { public final static String EXTRA_MESSAGE1 = "com.example.text.MESSAGE"; public void onCreate (Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView (R.layout.activity_home); GridView gridview = (GridView) findViewById (R.id.gridview); gridview.setAdapter (new ButtonAdapter (this)); /*gridview.setOnItemClickListener (new OnItemClickListener () { public void onItemClick (AdapterView <?> parent, View v, int position, long id) { Toast.makeText (home.this, "" + position, Toast.LENGTH_LONG).show (); Intent intent = new Intent (this, alarm.class); String message = "Position:" + position; intent.putExtra(EXTRA_MESSAGE1, message); startActivity (intent); } }); * */ } @Override public void onItemClick (AdapterView <?> parent, View v, int position, long id) { Intent intent = new Intent (this, alarm.class); String message = "Position:" + position; intent.putExtra(EXTRA_MESSAGE1, message); startActivity (intent); } }
El onItemClick no funciona y tampoco lo hace el comentado 'setOnItemClickListener' cuando no se comenta y 'onItemClick' se comenta. ¿Qué estoy haciendo mal?
- Manejo de elementos del menú emergente
- ¿Cómo uso OnItemClickListener para iniciar una nueva intención en función de qué elemento se hace clic?
- Manejo de un elemento de menú Haga clic en Evento - Android
- OnItemClickListener obtener datos del modelo
- OnItemClickListener con adaptador personalizado y listview
- Android: la posición de onItemClick () es relativa al área visible, no toda la lista
- Crear intención dentro del listview del evento setOnItemClickListener
- OnItemClickListener no funciona, pero OnItemLongClickListener está trabajando en GridView
Si GridView, ListView
tienen controles de clic aptos como BUtton, entonces onItemClick
no se disparará.
Es necesario implementar el Button Click listener
en su método getView
del adaptador.
me gusta
public View getView(int position, View convertView, ViewGroup parent) { Button btn; if (convertView == null) { // if it's not recycled, initialize some // attributes btn = new Button (mContext); btn.setLayoutParams(new GridView.LayoutParams(190, 190)); btn.setPadding(1, 1, 1, 1); } else { btn = (Button) convertView; } // btn.setText(filesnames[position]); // filenames is an array of // strings //btn.setTextColor (Color.WHITE); // btn.setBackgroundResource (R.drawable.sample_2); // btn.setBackgroundColor (Color.BLACK); btn.setHighlightColor(Color.GREEN); btn.setId(position); btn.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Handle the click here } }); return btn; }
Puede agregar esta línea en el diseño principal de los elementos de GridView:
android:descendantFocusability="blocksDescendants"
Entonces onItemClickListener.onItemClick()
no se disparará cuando toque en subviews que OnClickListener se ha definido para ellos por separado.
He probado que Set Button.onClickListener () (en API 15) no solucionará el problema.
Por lo tanto, el GridView no activará onItemClick si contiene vistas que se pueden hacer clic .
Puede utilizar ImageView en lugar de Button.
Tengo el mismo problema cuando estaba tratando de implementar onitemclick
en gridview
donde lleno de botón. Porque el botón está robando el foco de cada espacio en gridview
, usted tiene que dar el botón inflado android:focusable="false"
. Sin embargo, el botón ocupa casi todo el espacio dentro de una cuadrícula, por lo que tiene que hacer clic en el borde mismo del botón para activar la onitemclick
llamada onitemclick
. Estoy sugiriendo que puede establecer onclick
o utilizar la imagen y designe como un botón.
- ¿El proveedor de Sun PKCS # 11 es compatible con Android?
- Resolución de pantalla para Android y iPhone diseño en Photoshop