Thursday, 8 May 2014

How to create Grid layout or Grid menu in android

Grid layout:

Try this :

grid_view.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

<GridView
        android:id="@+id/grid"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"    
        android:gravity="center"
        android:numColumns="auto_fit"
        android:stretchMode="spacingWidthUniform" >
    </GridView>

</RelativeLayout>

Create Grid View Adapter class file

public class GridViewAdapter extends ArrayAdapter<Listitem> {
Context context;
int layoutResourceId;
ArrayList<Listitem> data = new ArrayList<Listitem>();
public GridViewAdapter(Context context, int layoutResourceId,ArrayList<Listitem>gridArray) {
super(context, layoutResourceId, gridArray);
this.layoutResourceId = layoutResourceId;
this.context = context;
this.data = gridArray;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View row = convertView;
RecordHolder holder = null;
if (row == null) {
LayoutInflater inflater = ((Activity) context).getLayoutInflater();
row = inflater.inflate(layoutResourceId, parent, false);
holder = new RecordHolder();
holder.txtTitle = (TextView) row.findViewById(R.id.item_text);
holder.imageItem = (ImageView) row.findViewById(R.id.item_image);
row.setTag(holder);
} else {
holder = (RecordHolder) row.getTag();
}
Listitem item = data.get(position);
holder.txtTitle.setText(item.getTitle());
holder.imageItem.setImageBitmap(item.getImage());
return row;
}
static class RecordHolder {
TextView txtTitle;
ImageView imageItem;
}
}

Create class file Activity_menu.java


public class Activity_menu extends Activity {
      
       GridViewAdapter GridViewAdapter;
       GridView gridView;
      
       @Override
       protected void onCreate(Bundle savedInstanceState) {
              super.onCreate(savedInstanceState);
              setContentView(R.layout.grid_view);
             
              Bitmap bus = BitmapFactory.decodeResource(this.getResources(), R.drawable.bus);
              Bitmap train = BitmapFactory.decodeResource(this.getResources(), R.drawable.train);            
              Bitmap travel = BitmapFactory.decodeResource(this.getResources(), R.drawable.travel);
              Bitmap busroute = BitmapFactory.decodeResource(this.getResources(), R.drawable.busrr);

              gridArray.add(new Listitem(bus,"Bus"));
              gridArray.add(new Listitem(train, "Train"));
              gridArray.add(new Listitem(travel,"Flight"));
              gridArray.add(new Listitem(busroute, "Bus"));
             
              gridView = (GridView) findViewById(R.id.StugridView);
             
              GridViewAdapter = new GridViewAdapter(this, R.layout.gridlist, gridArray);
              gridView.setAdapter(GridViewAdapter);             
              gridView.setOnItemClickListener(new OnItemClickListener() {

                     @Override
                     public void onItemClick(AdapterView<?> parent, View v,
                                  int position, long id) {

                           switch(position)
                           {
                           case 0:
                                 
                                  ProgressDialog pDialog = new ProgressDialog(Activity_menu.this);
                                  pDialog.setMessage("Loading..");
                                  pDialog.setIndeterminate(false);
                                  pDialog.setCancelable(true);
                                  pDialog.show();
                                  Intent intent = new Intent(getApplicationContext(), Bus.class);
                                  startActivity(intent);
                                  break;
                           case 1:
                                 
                                  ProgressDialog pDialog1 = new ProgressDialog(Activity_menu.this);
                                  pDialog1.setMessage("Loading..");
                                  pDialog1.setIndeterminate(false);
                                  pDialog1.setCancelable(true);
                                  pDialog1.show();
                                  Intent intent1 = new Intent(getApplicationContext(), Train.class);
                                  startActivity(intent1);
                                  break;
                           case 2:
                                  ProgressDialog pDialog2 = new ProgressDialog(Activity_menu.this);
                                  pDialog2.setMessage("Loading..");
                                  pDialog2.setIndeterminate(false);
                                  pDialog2.setCancelable(true);
                                  pDialog2.show();
                                  Intent intent2 = new Intent(getApplicationContext(), Flight.class);
                                  startActivity(intent2);
                                  break;
                           case 3:
                                  ProgressDialog pDialog3 = new ProgressDialog(Activity_menu.this);
                                  pDialog3.setMessage("Loading..");
                                  pDialog3.setIndeterminate(false);
                                  pDialog3.setCancelable(true);
                                  pDialog3.show();
                                  Intent intent3 = new Intent(getApplicationContext(), Bus.class);
                                  startActivity(intent3);
                                  break;                                 
                           }
                     }
              });
         }
}

add reference library file
gridlayout_v7 .jar download link : https://github.com/jacobmoncur/gridlayout_v7/tree/master/bin

No comments:

Post a Comment