Membuat Desain ListView to GridView di Android Studio


Selamat datang di Juanas Smith Shared kali ini admin akan membagikan cara membuat desain listview menjadi gridview, dari gridview ke listview di android studio, artikel ini ditujukan bagi anda yang sedang belajar pemrograman android pemula hingga mengengah



Langkah Pertama buatlah dua viewstub di activity main
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
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"
   
android:orientation="vertical">

    <ViewStub
       
android:id="@+id/stub_list"
       
android:layout_width="match_parent"
       
android:layout_height="wrap_content"
       
android:layout_marginTop="10dp"
       
android:inflatedId="@+id/showLayout"
       
android:layout="@layout/my_listview" />

    <ViewStub
       
android:id="@+id/stub_grid"
       
android:layout_width="match_parent"
       
android:layout_height="wrap_content"
        
android:layout_marginTop="10dp"
       
android:inflatedId="@+id/showLayout"
       
android:layout="@layout/my_gridview" />

Selanjutnya buat grid_item untuk layout gridviewnya
<?xml version="1.0" encoding="utf-8"?>

<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"

   
xmlns:app="http://schemas.android.com/apk/res-auto"

   
android:orientation="vertical"

   
android:layout_width="match_parent"

   
android:layout_height="match_parent"

   
android:paddingTop="10dp"

   
android:paddingBottom="10dp"

   
android:paddingLeft="10dp"

   
android:paddingRight="10dp"

   
android:background="#fff">



    <ImageView

       
android:id="@+id/ImageView"

       
android:layout_width="80dp"

       
android:layout_height="80dp"

       
app:srcCompat="@mipmap/ic_launcher_round"

       
android:layout_gravity="center"/>



    <TextView

       
android:layout_width="wrap_content"

       
android:layout_height="wrap_content"

       
android:id="@+id/txtTitle"

       
android:textStyle="bold"

       
android:layout_below="@+id/ImageView"

       
android:text="Title"

       
android:textAppearance="?android:attr/textAppearanceMedium"

       
android:layout_gravity="center"/>



    <TextView

       
android:layout_width="wrap_content"

       
android:layout_height="wrap_content"

       
android:id="@+id/txtDescription"

       
android:textStyle="bold"

       
android:text="Description"

       
android:textAppearance="?android:attr/textAppearanceSmall"

       
android:layout_below="@+id/txtTitle"

       
android:layout_toRightOf="@+id/ImageView"

       
android:layout_gravity="center"/>



</LinearLayout>

jika tadi membuat grid_item sekarang buatlah list_item untuk layout list nya
<?xml version="1.0" encoding="utf-8"?>

<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"

   
xmlns:app="http://schemas.android.com/apk/res-auto"

   
android:layout_width="match_parent"

    
android:layout_height="match_parent"

   
xmlns:id="http://schemas.android.com/tools">



    <ImageView

       
android:id="@+id/ImageView"

       
android:layout_width="80dp"

       
android:layout_height="80dp"

       
app:srcCompat="@mipmap/ic_launcher_round" />



    <TextView

       
android:layout_width="wrap_content"

       
android:layout_height="wrap_content"

       
android:id="@+id/txtTitle"

       
android:textStyle="bold"

       
android:text="Title"

       
android:textAppearance="?android:attr/textAppearanceMedium"

       
android:layout_toRightOf="@+id/ImageView"

       
android:layout_marginTop="15dp"

       
android:layout_marginLeft="20dp"/>



    <TextView

       
android:layout_width="wrap_content"

       
android:layout_height="wrap_content"

       
android:id="@+id/txtDescription"

       
android:textStyle="bold"

       
android:text="Description"

       
android:textAppearance="?android:attr/textAppearanceSmall"

       
android:layout_below="@+id/txtTitle"

       
android:layout_toRightOf="@+id/ImageView"

       
android:layout_marginTop="10dp"

       
android:layout_marginLeft="20dp"/>

</RelativeLayout>

Langkah berikutnya buat layout lagi dengan nama my_gridview.xml untuk menampung gridviewnya
<?xml version="1.0" encoding="utf-8"?>

<FrameLayout
xmlns:android="http://schemas.android.com/apk/res/android"

   
android:layout_width="match_parent"

   
android:layout_height="match_parent"

   
android:background="#d1d1d1">



   

    <GridView

       
android:layout_width="match_parent"

       
android:layout_height="match_parent"

       
android:id="@+id/mygridView"

        
android:paddingTop="0dp"

       
android:paddingBottom="15dp"

       
android:columnWidth="100dp"

       
android:gravity="center|bottom"

       
android:horizontalSpacing="10dp"

       
android:layout_marginLeft="0dp"

       
android:layout_marginRight="0dp"

       
android:numColumns="3"

       
android:stretchMode="spacingWidth"

       
android:verticalSpacing="20dp"

       
android:dividerHeight="10dp" />

</FrameLayout>

Sekarang buat my_listview.xml untuk menampung listview nya
<?xml version="1.0" encoding="utf-8"?>

<FrameLayout
xmlns:android="http://schemas.android.com/apk/res/android"

   
android:layout_width="match_parent" android:layout_height="match_parent"

   
android:background="#d1d1d1">



    <ListView

       
android:layout_width="match_parent"

       
android:layout_height="match_parent"

       
android:id="@+id/myListView"

       
android:cacheColorHint="#000"

       
android:paddingTop="10dp"

       
android:dividerHeight="10dp"

       
android:divider="#ffffff"

       
android:layout_marginLeft="0dp"

       
android:layout_marginRight="0dp" />



</FrameLayout>

Kemudian buat class product di java
package giviews.id.listview2gridview;



/**

 * Created by asus on 09/05/2017.

 */



public class Product {

   
private int imageId;

    private
String title, description;



    public
Product(int imageId, String title, String description) {

       
this.imageId = imageId;

        this
.title = title;

        this
.description = description;

   
}



   
public int getImageId() {

       
return imageId;

   
}



   
public void setImageId(int imageId) {

       
this.imageId = imageId;

   
}



   
public String getTitle() {

       
return title;

   
}



   
public void setTitle(String title) {

       
this.title = title;

   
}



   
public String getDescription() {

       
return description;

   
}



   
public void setDescription(String description) {

       
this.description = description;

   
}

}

Kemudian buat GridViewAdapter di java
package giviews.id.listview2gridview;



import
android.content.Context;

import
android.support.annotation.LayoutRes;

import
android.support.annotation.NonNull;

import
android.support.annotation.Nullable;

import
android.view.LayoutInflater;

import
android.view.View;

import
android.view.ViewGroup;

import
android.widget.ArrayAdapter;

import
android.widget.ImageView;

import
android.widget.TextView;



import
java.util.List;



/**

 * Created by asus on 09/05/2017.

 */



public class GridViewAdapter extends ArrayAdapter<Product> {



   
public GridViewAdapter(@NonNull Context context, @LayoutRes int resource, @NonNull List<Product> objects) {

       
super(context, resource, objects);

   
}



   
@NonNull

    @Override

   
public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {

        View v = convertView
;



        if
(null == v) {

            LayoutInflater inflater = (LayoutInflater)getContext().getSystemService(Context.
LAYOUT_INFLATER_SERVICE);

           
v = inflater.inflate(R.layout.grid_item, null);

       
}

        Product product = getItem(position)
;

       
ImageView img = (ImageView) v.findViewById(R.id.ImageView);

       
TextView txtTitle = (TextView) v.findViewById(R.id.txtTitle);

       
TextView txtDescription = (TextView) v.findViewById(R.id.txtDescription);



       
img.setImageResource(product.getImageId());

       
txtTitle.setText(product.getTitle());

       
txtDescription.setText(product.getDescription());



        return
v;

   
}

}

dan sekarang ListViewAdapter
package giviews.id.listview2gridview;



import
android.content.Context;

import
android.support.annotation.LayoutRes;

import
android.support.annotation.NonNull;

import
android.support.annotation.Nullable;

import
android.view.LayoutInflater;

import
android.view.View;

import
android.view.ViewGroup;

import
android.widget.ArrayAdapter;

import
android.widget.ImageView;

import
android.widget.TextView;



import
java.util.List;



/**

 * Created by asus on 09/05/2017.

 */



public class ListViewAdapter extends ArrayAdapter<Product> {



   
public ListViewAdapter(@NonNull Context context, @LayoutRes int resource, @NonNull List<Product> objects) {

       
super(context, resource, objects);

   
}



   
@NonNull

    @Override

   
public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {

        View v = convertView
;



        if
(null == v) {

            LayoutInflater inflater = (LayoutInflater)getContext().getSystemService(Context.
LAYOUT_INFLATER_SERVICE);

           
v = inflater.inflate(R.layout.list_item, null);

       
}

        Product product = getItem(position)
;

       
ImageView img = (ImageView) v.findViewById(R.id.ImageView);

       
TextView txtTitle = (TextView) v.findViewById(R.id.txtTitle);

       
TextView txtDescription = (TextView) v.findViewById(R.id.txtDescription);



       
img.setImageResource(product.getImageId());

       
txtTitle.setText(product.getTitle());

       
txtDescription.setText(product.getDescription());



        return
v;

   
}

}

Kemudian buat menu dengan nama main.xml untuk menempatkan tombol switch view dari gridview ke list view
<?xml version="1.0" encoding="utf-8"?>

<menu
xmlns:android="http://schemas.android.com/apk/res/android">

    <item
android:id="@+id/item_menu_1" android:title="Swith View"></item>

</menu>

Terakhir sesuaikan isi file MainActivity.java seperti dibawah
package giviews.id.listview2gridview;



import
android.content.SharedPreferences;

import
android.os.Bundle;

import
android.support.v7.app.AppCompatActivity;

import
android.view.Menu;

import
android.view.MenuItem;

import
android.view.View;

import
android.view.ViewStub;

import
android.widget.AdapterView;

import
android.widget.GridView;

import
android.widget.ListView;

import
android.widget.Toast;



import
java.util.ArrayList;

import
java.util.List;



public class
MainActivity extends AppCompatActivity {



   
private ViewStub stubGrid, stubList;

    private
ListView listView;

    private
GridView gridView;

    private
ListViewAdapter listViewAdapter;

    private
GridViewAdapter gridViewAdapter;

    private
List<Product> productList;

    private int
currentViewMode = 0;



    static final int
VIEW_MODE_LISTVIEW = 0;

    static final int
VIEW_MODE_GRIDVIEW = 1;







   
@Override

   
protected void onCreate(Bundle savedInstanceState) {

       
super.onCreate(savedInstanceState);

       
setContentView(R.layout.activity_main);



       
stubList = (ViewStub) findViewById(R.id.stub_list);

       
stubGrid = (ViewStub) findViewById(R.id.stub_grid);



       
//inflate ViewStube before get view



       
stubList.inflate();

       
stubGrid.inflate();



       
listView = (ListView) findViewById(R.id.myListView);

       
gridView = (GridView) findViewById(R.id.mygridView);



       
//get list of product

       
getProductList();



       
//get current view in share references

       
SharedPreferences sharedPreferences = getSharedPreferences("View Mode", MODE_PRIVATE);

       
currentViewMode = sharedPreferences.getInt("currentViewMode", VIEW_MODE_LISTVIEW); //default view is listview

        //register item click

       
listView.setOnItemClickListener(onItemClick);

       
gridView.setOnItemClickListener(onItemClick);



       
switchView();



   
}



   
private void switchView() {

       
if(VIEW_MODE_LISTVIEW == currentViewMode) {

           
// display listview

           
stubList.setVisibility(View.VISIBLE);

           
// hide gridview

           
stubGrid.setVisibility(View.GONE);

       
}else{

           
// hide listview

           
stubList.setVisibility(View.GONE);

           
// display gridview

           
stubGrid.setVisibility(View.VISIBLE);

       
}

        setAdapters()
;

   
}



   
private void setAdapters() {

       
if (VIEW_MODE_LISTVIEW == currentViewMode) {

           
listViewAdapter = new ListViewAdapter(this, R.layout.list_item, productList);

           
listView.setAdapter(listViewAdapter);

       
}else{

           
gridViewAdapter = new GridViewAdapter(this, R.layout.grid_item, productList);

           
gridView.setAdapter(gridViewAdapter);

       
}

    }



   
public List<Product> getProductList() {

       
// pseudo code to get product, replace your code to get real product here

       
productList = new ArrayList<>();

       
productList.add(new Product(R.mipmap.ic_launcher_round, "Title 1", "This is description 1"));

       
productList.add(new Product(R.mipmap.ic_launcher_round, "Title 2", "This is description 2"));

       
productList.add(new Product(R.mipmap.ic_launcher_round, "Title 3", "This is description 3"));

       
productList.add(new Product(R.mipmap.ic_launcher_round, "Title 4", "This is description 4"));

        
productList.add(new Product(R.mipmap.ic_launcher_round, "Title 5", "This is description 5"));

       
productList.add(new Product(R.mipmap.ic_launcher_round, "Title 6", "This is description 6"));

       
productList.add(new Product(R.mipmap.ic_launcher_round, "Title 7", "This is description 7"));

       
productList.add(new Product(R.mipmap.ic_launcher_round, "Title 8", "This is description 8"));

       
productList.add(new Product(R.mipmap.ic_launcher_round, "Title 9", "This is description 9"));

        
productList.add(new Product(R.mipmap.ic_launcher_round, "Title 10", "This is description 10"));

        return
productList;

   
}



    AdapterView.OnItemClickListener
onItemClick = new AdapterView.OnItemClickListener() {

       
@Override

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

           
// Do anything when user click to item

           
Toast.makeText(getApplicationContext(),productList.get(position).getTitle() +" - " + productList.get(position).getDescription(), Toast.LENGTH_SHORT).show();

       
}

    }
;



   
@Override

   
public boolean onCreateOptionsMenu(Menu menu) {

        getMenuInflater().inflate(R.menu.
main, menu);

        return super
.onCreateOptionsMenu(menu);

   
}



    
@Override

   
public boolean onOptionsItemSelected(MenuItem item) {

       
switch (item.getItemId()) {

           
case R.id.item_menu_1:

               
if (VIEW_MODE_LISTVIEW == currentViewMode) {

                   
currentViewMode = VIEW_MODE_GRIDVIEW;

               
}else{

                   
currentViewMode = VIEW_MODE_LISTVIEW;

               
}

               
//Swith view

               
switchView();

               
//save view mode is share reference

               
SharedPreferences sharedPreferences = getSharedPreferences("ViewMode", MODE_PRIVATE);

               
SharedPreferences.Editor editor = sharedPreferences.edit();

               
editor.putInt("currentViewMode", currentViewMode);

               
editor.commit();



                break;

       
}

       
return true;

   
}

}


Silakan jalankan aplikasi anda, jika da yang error silakan ditanyakan di kolom komentar dibawah. jika artikel ini bermanfaat silakan di share ke teman anda. terimakasih sudah berkunjung ke blog kami.

Belum ada Komentar untuk "Membuat Desain ListView to GridView di Android Studio"

Posting Komentar

Iklan Atas Artikel

Iklan Tengah Artikel 1

Iklan Tengah Artikel 2

Iklan Bawah Artikel