Spinners
, GridViews
und ListViews
sind Subklassen von android AdapterViews
. Dies bedeutet, dass sie keine untergeordneten Elemente haben und dynamisch mithilfe von benutzerdefinierten Adaptern, die die Klasse BaseAdapter
erweitern, programmgesteuert erstellt werden.
zu tun, was Sie brauchen, um zunächst eine leere Aktivität erstellen und GridActivity
nennen. Bearbeiten Sie die Layoutdatei activity_grid.xml in eine leere GridView
. Beispiel -
<?xml version="1.0" encoding="utf-8"?>
<GridView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.user.gridbuttonview.GridActivity"
android:columnWidth="90dp"
android:id="@+id/activity_grid"
android:gravity="center"
android:horizontalSpacing="10dp"
android:numColumns="auto_fit"
android:stretchMode="columnWidth"
android:verticalSpacing="10dp" />
Dann eine neue Klasse in Ihrem Projekt mit dem Namen ButtonAdapter
schaffen wie die folgt -
Kenntnis, dass sich die Gesamtzahl der Tasten kann in der Variablen total_btns
eingestellt werden, die standardmäßig 20 ist.
import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.Toast;
public class ButtonAdapter extends BaseAdapter
{
private Context mContext;
private int btn_id;
private int total_btns = 20;
public ButtonAdapter(Context context) {
this.mContext = context;
}
@Override
public int getCount() {
return total_btns;
}
@Override
public Object getItem(int i) {
return null;
}
@Override
public long getItemId(int i) {
return 0;
}
@Override
public View getView(final int i, View view, ViewGroup viewGroup)
{
Button btn;
if (view == null) {
btn = new Button(mContext);
btn.setText("Button " + (++btn_id));
} else {
btn = (Button) view;
}
btn.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
Toast.makeText(v.getContext(), "Button #" + (i + 1), Toast.LENGTH_SHORT).show();
}
});
return btn;
}
}
schließlich, ändern Sie Ihre GridActivity
Klasse onCreate
Methode Gridview auf Schöpfung zu setzen.
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_grid);
GridView gridview = (GridView) findViewById(R.id.activity_grid);
gridview.setAdapter(new ButtonAdapter(this));
}
Dies erstellt Ihre Rasteransicht, die Sie möchten, mit Schaltflächen. Und wenn Sie die Netzaktivität auslösen, erhalten Sie die folgende Ausgabe -
Der Klick Zuhörer in der Adapterklasse kann bearbeitet werden, um jeden Klick zu behandeln. Ich hoffe es hilft!