设置自定义适配器网格视图 [英] setting custom adapters to grid views

查看:159
本文介绍了设置自定义适配器网格视图的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在我的主要活动我有一个包含三个类别(所有,水平和垂直),下面有一个GridView好手。我在资源文件夹的一些图像这对纵向和横向模式。我需要根据对微调所选项目的图片设置为GridView控件。我能一个类别设置为GridView控件(例如对于所有类别)。当选择其他类别的GridView没有更新。对于更新的GridView我该怎么办? plz帮助我吗?

我试过用放置在我的活动三GridView的并设置其知名度过去了,使其可见时设置的适配器(我用三个独立的适配器,但无法正常工作。

我的code如下。

 公共类MainActivity延伸活动{
    微调VSEL;
    ArrayList的<串GT; VIMAGE =新的ArrayList<串GT;();
    ArrayList的<串GT;所有=新的ArrayList<串GT;();
    ArrayList的<串GT;画佳=新的ArrayList<串GT;();
    ArrayList的<整数GT; [ALLID =新的ArrayList<整数GT;();
    ArrayList的<整数GT;躲在=新的ArrayList<整数GT;();
    ArrayList的<整数GT; VID =新的ArrayList<整数GT;();
    ArrayList的<整数GT; TOT =新的ArrayList<整数GT;();
    ArrayList的<串GT;微调=新的ArrayList<串GT;();
    GridView控件GV,锦华,GV1,GV2;
    @覆盖
    公共无效的onCreate(捆绑savedInstanceState){
        super.onCreate(savedInstanceState);
        的setContentView(R.layout.main);
        GV =(GridView控件)findViewById(R.id.gridView1);
        GV1 =(GridView控件)findViewById(R.id.gridView2);
        GV2 =(GridView控件)findViewById(R.id.gridView3);
        资源类= R.drawable.class;
        java.lang.reflect.Field中的[]栏= resources.getFields();
         对于(java.lang.reflect.Field中的字段:字段)
        {
             尝试{
                    如果(field.getName()。包含(分裂))
                    {
                        all.add(field.getName());
                        allid.add(field.getInt(场));
                    }
                    如果(field.getName()。包含(splith))
                        {
                            //串INAME = field.getName();
                            himage.add(field.getName());
                            hid.add(field.getInt(场));
                        }
                    如果(field.getName()。包含(splitv))
                        {
                            vimage.add(field.getName());
                            vid.add(field.getInt(场));
                        }
                        /*其他
                        {
                            all.add(field.getName());
                            allid.add(field.getInt(场));
                        } * /
                    }
                 赶上(抛出:IllegalArgumentException五){
                // TODO自动生成catch块
                e.printStackTrace();
                }赶上(IllegalAccessException E){
                // TODO自动生成catch块
                e.printStackTrace();
                }
        }
         的System.out.println(所有arraylist->中+ [ALLID);
         的System.out.println(水平arraylist->中+ HID);
         的System.out.println(垂直arraylist->中+ VID);
      //的String [] = viewsel {全部,垂直,水平};
         spinner.add(全部);
         spinner.add(垂直);
         spinner.add(水平);
        VSEL​​ =(微调)findViewById(R.id.spinner1);
        ArrayAdapter<串GT; sadpater =新ArrayAdapter<串GT;(这一点,android.R.layout.simple_spinner_item,微调);
        sadpater.setDropDownViewResource(android.R.layout.simple_spinner_item);
        vsel.setAdapter(sadpater);
        vsel.setOnItemSelectedListener(新OnItemSelectedListener(){            公共无效onItemSelected(适配器视图<>母公司,观景,
                    INT位置,长的id){
                // TODO自动生成方法存根
                //字符串项= parent.getItemAtPosition(位置)的ToString();
                字符串项= parent.getSelectedItem()的toString()。                如果(item.equals(全部))
                {
                    gv2.setVisibility(View.INVISIBLE);
                    gv1.setVisibility(View.INVISIBLE);
                    Toast.makeText(MainActivity.this,项目,Toast.LENGTH_SHORT).show();                    gv.setVisibility(View.VISIBLE);
                     gv.setAdapter(新AppsAdapter(MainActivity.this,[ALLID));
                }
                如果(item.equals(垂直))
                {
                    gv.setVisibility(View.INVISIBLE);
                    gv2.setVisibility(View.INVISIBLE);                    gv1.setVisibility(View.VISIBLE);
                    Toast.makeText(MainActivity.this,项目,Toast.LENGTH_SHORT).show();                     gv1.setAdapter(新AppsAdapter1(MainActivity.this,VID));
                }
                 如果(item.equals(水平));
                {
                    gv.setVisibility(View.INVISIBLE);
                    gv1.setVisibility(View.INVISIBLE);                    Toast.makeText(MainActivity.this,项目,Toast.LENGTH_SHORT).show();                    gv2.setVisibility(View.VISIBLE);
                     gv2.setAdapter(新AppsAdapter3(MainActivity.this,HID));
                }
            }            公共无效onNothingSelected(适配器视图<>查看){
                // TODO自动生成方法存根            }
        });
    }
    公共类AppsAdapter延伸BaseAdapter {
        私人上下文的背景下;
        ArrayList的<整数GT; dirsTemp =新的ArrayList<整数GT;();
        公共AppsAdapter(上下文C,ArrayList的<整数GT; [ALLID)
        {            Log.d(在appsadapter1一切,斐伊川);
            dirsTemp = [ALLID;            上下文= C;        }
        // ---返回图像的数量---        公众最终诠释getCount将(){            返回dirsTemp.size();
        }         // ---返回一个项目的ID ---        公众最终对象的getItem(INT位置){
            返回dirsTemp.get(位置);
        }        公众最终长getItemId(INT位置){            返回的位置;
        }        公共查看getView(INT位置,查看convertView,父母的ViewGroup){
            // TODO自动生成方法存根
            //最后文件F =(文件)的getItem(位置);
            INT I =(整数)的getItem(位置);
            的System.out.println(Dirstemp->中+ dirsTemp);
            ImageView的IV;
            如果(convertView == NULL)
            {
                    IV =新ImageView的(上下文);
                    //iv.setPadding(5,5,5,5);
            }            其他
            {
                    IV =(ImageView的)convertView;
            }
            iv.setImageResource(dirsTemp.get(位置));
            返回IV;
        }
    }
    公共类AppsAdapter1延伸BaseAdapter {
        私人语境CONTEXT1;
        ArrayList的<整数GT; dirsTemp1 =新的ArrayList<整数GT;();
        公共AppsAdapter1(上下文C,ArrayList的<整数GT; VID){
            Log.d(以appsadapter1垂直,斐伊川);
            dirsTemp1 = VID;            CONTEXT1 = C;        }
        // ---返回图像的数量---        公众最终诠释getCount将(){            返回dirsTemp1.size();
        }         // ---返回一个项目的ID ---        公众最终对象的getItem(INT位置){
            返回dirsTemp1.get(位置);
        }        公众最终长getItemId(INT位置){            返回的位置;
        }        公共查看getView(INT位置,查看convertView,父母的ViewGroup){
            // TODO自动生成方法存根
            //最后文件F =(文件)的getItem(位置);
            INT I =(整数)的getItem(位置);
            ImageView的IV1;
            如果(convertView == NULL)
            {
                    IV1 =新ImageView的(CONTEXT1);
                    //iv.setPadding(5,5,5,5);
            }            其他
            {
                    IV1 =(ImageView的)convertView;
            }
            iv1.setImageResource(dirsTemp1.get(位置));
            返回IV1;
        }
    }
    公共类AppsAdapter3延伸BaseAdapter {
        私人语境context2;
        ArrayList的<整数GT; dirsTemp2 =新的ArrayList<整数GT;();
        公共AppsAdapter3(上下文C,ArrayList的<整数GT; HID){
            Log.d(以appsadapter1水平,斐伊川);
            dirsTemp2 =藏;
            context2 = C;
        }
        // ---返回图像的数量---        公众最终诠释getCount将(){            返回dirsTemp2.​​size();
        }         // ---返回一个项目的ID ---        公众最终对象的getItem(INT位置){
            返回dirsTemp2.​​get(位置);
        }        公众最终长getItemId(INT位置){            返回的位置;
        }        公共查看getView(INT位置,查看convertView,父母的ViewGroup){
            // TODO自动生成方法存根
            //最后文件F =(文件)的getItem(位置);
            INT I =(整数)的getItem(位置);
            ImageView的IV2;
            如果(convertView == NULL)
            {
                    IV2 =新ImageView的(context2);
                    //iv.setPadding(5,5,5,5);
            }            其他
            {
                    IV2 =(ImageView的)convertView;
            }
            iv2.setImageResource(dirsTemp2.​​get(位置));
            返回IV2;
        }
    }
}


解决方案

您并不需要三个GridView的和三个适配器。一个就够了。当从微调改变类别,刷新列表 [ALLID,VID,HID (适配器用于显示GridView的),然后 notifyDataSetChanged()适配器上。

编辑:试试这个:

 进口的java.util.ArrayList;进口org.apache.commons.logging.Log;进口android.app.Activity;
进口android.content.Context;
进口android.os.Bundle;
进口android.view.View;
进口android.view.ViewGroup;
进口android.widget.AdapterView;
进口android.widget.AdapterView.OnItemSelectedListener;
进口android.widget.ArrayAdapter;
进口android.widget.BaseAdapter;
进口android.widget.GridView;
进口android.widget.ImageView;
进口android.widget.Spinner;
进口android.widget.Toast;
    公共类ddsds延伸活动{
   微调VSEL;
   ArrayList的<串GT; VIMAGE =新的ArrayList<串GT;();
   ArrayList的<串GT;所有=新的ArrayList<串GT;();
   ArrayList的<串GT;画佳=新的ArrayList<串GT;();
   ArrayList的<整数GT; [ALLID =新的ArrayList<整数GT;();
   ArrayList的<整数GT;躲在=新的ArrayList<整数GT;();
   ArrayList的<整数GT; VID =新的ArrayList<整数GT;();
   ArrayList的<整数GT; TOT =新的ArrayList<整数GT;();
   ArrayList的<串GT;微调=新的ArrayList<串GT;();
   GridView控件GV;   @覆盖
   公共无效的onCreate(捆绑savedInstanceState){
       super.onCreate(savedInstanceState);
       的setContentView(R.layout.main);
       GV =(GridView控件)findViewById(R.id.gridView1);       资源类= R.drawable.class;
       java.lang.reflect.Field中的[]栏= resources.getFields();
        对于(java.lang.reflect.Field中的字段:字段)
       {
            尝试{
                   如果(field.getName()。包含(分裂))
                   {
                       all.add(field.getName());
                       allid.add(field.getInt(场));
                   }
                   如果(field.getName()。包含(splith))
                       {
                           //串INAME = field.getName();
                           himage.add(field.getName());
                           hid.add(field.getInt(场));
                       }
                   如果(field.getName()。包含(splitv))
                       {
                           vimage.add(field.getName());
                           vid.add(field.getInt(场));
                       }
                       /*其他
                       {
                           all.add(field.getName());
                           allid.add(field.getInt(场));
                       } * /
                   }
                赶上(抛出:IllegalArgumentException五){
               // TODO自动生成catch块
               e.printStackTrace();
               }赶上(IllegalAccessException E){
               // TODO自动生成catch块
               e.printStackTrace();
               }
       }
        的System.out.println(所有arraylist->中+ [ALLID);
        的System.out.println(水平arraylist->中+ HID);
        的System.out.println(垂直arraylist->中+ VID);
     //的String [] = viewsel {全部,垂直,水平};
        spinner.add(全部);
        spinner.add(垂直);
        spinner.add(水平);
       VSEL​​ =(微调)findViewById(R.id.spinner1);
       ArrayAdapter<串GT; sadpater =新ArrayAdapter<串GT;(这一点,android.R.layout.simple_spinner_item,微调);
       sadpater.setDropDownViewResource(android.R.layout.simple_spinner_item);
       vsel.setAdapter(sadpater);
       ArrayList的<串GT;清单;
       AppsAdapter适配器= NULL;       vsel.setOnItemSelectedListener(新OnItemSelectedListener(){           公共无效onItemSelected(适配器视图<>母公司,观景,
                   INT位置,长的id){
               // TODO自动生成方法存根
               //字符串项= parent.getItemAtPosition(位置)的ToString();
               字符串项= parent.getSelectedItem()的toString()。               如果(item.equals(全部))
               {
                   列出= [ALLID;
               }
               如果(item.equals(垂直))
               {
                   名单= VID;
               }
                如果(item.equals(水平));
               {
                   列表= HID));
               }               如果(适配器= NULL){
                   适配器=新AppsAdapter(MainActivity.this,清单);
                   gv.setAdapter(适配器);
               }
               adapter.notifyDataSetChanged();
           }           公共无效onNothingSelected(适配器视图<>查看){
               // TODO自动生成方法存根           }
       });
   }
   公共类AppsAdapter延伸BaseAdapter {
       私人上下文的背景下;
       ArrayList的<整数GT; dirsTemp =新的ArrayList<整数GT;();
       公共AppsAdapter(上下文C,ArrayList的<整数GT; [ALLID)
       {           Log.d(在appsadapter1一切,斐伊川);
           dirsTemp = [ALLID;           上下文= C;       }
       // ---返回图像的数量---       公众最终诠释getCount将(){           返回dirsTemp.size();
       }        // ---返回一个项目的ID ---       公众最终对象的getItem(INT位置){
           返回dirsTemp.get(位置);
       }       公众最终长getItemId(INT位置){           返回的位置;
       }       公共查看getView(INT位置,查看convertView,父母的ViewGroup){
           // TODO自动生成方法存根
           //最后文件F =(文件)的getItem(位置);
           INT I =(整数)的getItem(位置);
           的System.out.println(Dirstemp->中+ dirsTemp);
           ImageView的IV;
           如果(convertView == NULL)
           {
                   IV =新ImageView的(上下文);
                   //iv.setPadding(5,5,5,5);
           }           其他
           {
                   IV =(ImageView的)convertView;
           }
           iv.setImageResource(dirsTemp.get(位置));
           返回IV;
       }
   }
}
}

In my main activity I have a spinner which contains three categories(All,Horizontal and Vertical), below that there is a gridView. I have some images in resource folder which are for both vertical and horizontal mode. I need to set the images to gridView according to selected item on spinner. I am able to set one category into gridView (for e.g all category). When selecting other category gridView did not update. For updating the gridView what should I do? plz help me?

I tried it by using placing three gridViews in my activity and set their visibility to gone, and make it visible when setting adapter(I used three separate adapters but not working.

My code is given below.

     public class MainActivity extends Activity {
    Spinner vsel;
    ArrayList<String> vimage = new ArrayList<String>();
    ArrayList<String> all = new ArrayList<String>();
    ArrayList<String> himage = new ArrayList<String>();
    ArrayList<Integer> allid = new ArrayList<Integer>();   
    ArrayList<Integer> hid = new ArrayList<Integer>();
    ArrayList<Integer> vid = new ArrayList<Integer>();  
    ArrayList<Integer> tot = new ArrayList<Integer>();  
    ArrayList<String> spinner = new ArrayList<String>();
    GridView gv,sgv,gv1,gv2;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        gv = (GridView) findViewById(R.id.gridView1);
        gv1 = (GridView) findViewById(R.id.gridView2);
        gv2 = (GridView) findViewById(R.id.gridView3);
        Class resources = R.drawable.class;
        java.lang.reflect.Field[] fields = resources.getFields();
         for(java.lang.reflect.Field field : fields)
        {
             try {
                    if(field.getName().contains("split"))
                    {
                        all.add(field.getName());
                        allid.add(field.getInt(fields));
                    }
                    if(field.getName().contains("splith"))
                        {
                            //String iname = field.getName();
                            himage.add(field.getName());
                            hid.add(field.getInt(fields));
                        }
                    if(field.getName().contains("splitv"))
                        {
                            vimage.add(field.getName());
                            vid.add(field.getInt(fields));
                        }
                        /*else
                        {
                            all.add(field.getName());
                            allid.add(field.getInt(fields));
                        }*/
                    }
                 catch (IllegalArgumentException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
                } catch (IllegalAccessException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
                }
        }
         System.out.println("All arraylist-> " + allid);
         System.out.println("Horizontal arraylist-> " + hid);
         System.out.println("Vertical arraylist-> " + vid);
      //  String[] viewsel = {"All","Vertical","Horizontal"};
         spinner.add("All");
         spinner.add("Vertical");
         spinner.add("Horizontal");
        vsel = (Spinner) findViewById(R.id.spinner1); 
        ArrayAdapter<String> sadpater = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item,spinner);
        sadpater.setDropDownViewResource(android.R.layout.simple_spinner_item);
        vsel.setAdapter(sadpater);
        vsel.setOnItemSelectedListener(new OnItemSelectedListener() {

            public void onItemSelected(AdapterView<?> parent, View view,
                    int position, long id) {
                // TODO Auto-generated method stub
                //String item = parent.getItemAtPosition(position).toString();
                String item = parent.getSelectedItem().toString();

                if(item.equals("All"))
                {
                    gv2.setVisibility(View.INVISIBLE);
                    gv1.setVisibility(View.INVISIBLE);


                    Toast.makeText(MainActivity.this,item,Toast.LENGTH_SHORT).show();

                    gv.setVisibility(View.VISIBLE);
                     gv.setAdapter(new AppsAdapter(MainActivity.this,allid));
                }
                if(item.equals("Vertical"))
                {
                    gv.setVisibility(View.INVISIBLE);
                    gv2.setVisibility(View.INVISIBLE);

                    gv1.setVisibility(View.VISIBLE);
                    Toast.makeText(MainActivity.this,item,Toast.LENGTH_SHORT).show();

                     gv1.setAdapter(new AppsAdapter1(MainActivity.this,vid));
                }
                 if(item.equals("Horizontal"));
                {
                    gv.setVisibility(View.INVISIBLE);
                    gv1.setVisibility(View.INVISIBLE);

                    Toast.makeText(MainActivity.this,item,Toast.LENGTH_SHORT).show();

                    gv2.setVisibility(View.VISIBLE);
                     gv2.setAdapter(new AppsAdapter3(MainActivity.this,hid));
                }
            }

            public void onNothingSelected(AdapterView<?> view) {
                // TODO Auto-generated method stub

            }
        });
    }


    public class AppsAdapter extends BaseAdapter {
        private Context context;
        ArrayList<Integer> dirsTemp = new ArrayList<Integer>();
        public AppsAdapter(Context c,ArrayList<Integer> allid)
        {

            Log.d("In appsadapter1 all","Hii");
            dirsTemp = allid;

            context = c;

        }


        //---returns the number of images---

        public final int getCount() {

            return dirsTemp.size();


        }

         //---returns the ID of an item--- 

        public final Object getItem(int position) {
            return dirsTemp.get(position);
        }

        public final long getItemId(int position) {

            return position;
        }

        public View getView(int position, View convertView, ViewGroup parent) {
            // TODO Auto-generated method stub
            //final File f = (File) getItem(position);
            int i = (Integer) getItem(position);
            System.out.println("Dirstemp->"+dirsTemp);
            ImageView iv;
            if (convertView == null) 
            {
                    iv = new ImageView(context);
                    //iv.setPadding(5, 5, 5, 5);
            }

            else
            {
                    iv = (ImageView) convertView;
            }
            iv.setImageResource(dirsTemp.get(position));


            return iv;          
        }   
    }






    public class AppsAdapter1 extends BaseAdapter {
        private Context context1;
        ArrayList<Integer> dirsTemp1 = new ArrayList<Integer>();
        public AppsAdapter1(Context c,ArrayList<Integer>vid) {
            Log.d("In appsadapter1 vertical","Hii");
            dirsTemp1 = vid;

            context1 = c;

        }


        //---returns the number of images---

        public final int getCount() {

            return dirsTemp1.size();


        }

         //---returns the ID of an item--- 

        public final Object getItem(int position) {
            return dirsTemp1.get(position);
        }

        public final long getItemId(int position) {

            return position;
        }

        public View getView(int position, View convertView, ViewGroup parent) {
            // TODO Auto-generated method stub
            //final File f = (File) getItem(position);
            int i = (Integer) getItem(position);
            ImageView iv1;
            if (convertView == null) 
            {
                    iv1 = new ImageView(context1);
                    //iv.setPadding(5, 5, 5, 5);
            }

            else
            {
                    iv1 = (ImageView) convertView;
            }
            iv1.setImageResource(dirsTemp1.get(position));


            return iv1;         
        }   
    }  




    public class AppsAdapter3 extends BaseAdapter {
        private Context context2;
        ArrayList<Integer> dirsTemp2 = new ArrayList<Integer>();
        public AppsAdapter3(Context c,ArrayList<Integer>hid) {
            Log.d("In appsadapter1 horizontal","Hii");
            dirsTemp2 = hid;
            context2 = c;


        }


        //---returns the number of images---

        public final int getCount() {

            return dirsTemp2.size();


        }

         //---returns the ID of an item--- 

        public final Object getItem(int position) {
            return dirsTemp2.get(position);
        }

        public final long getItemId(int position) {

            return position;
        }

        public View getView(int position, View convertView, ViewGroup parent) {
            // TODO Auto-generated method stub
            //final File f = (File) getItem(position);
            int i = (Integer) getItem(position);
            ImageView iv2;
            if (convertView == null) 
            {
                    iv2 = new ImageView(context2);
                    //iv.setPadding(5, 5, 5, 5);
            }

            else
            {
                    iv2 = (ImageView) convertView;
            }
            iv2.setImageResource(dirsTemp2.get(position));


            return iv2;         
        }   
    }


}

解决方案

You don't need three gridViews and three adapters. One is enough. When changing category from spinner , refresh the list allid, vid, hid (used in Adapter to display gridview) and then notifyDataSetChanged() on the adapter.

EDIT: try this:

import java.util.ArrayList;

import org.apache.commons.logging.Log;

import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.ArrayAdapter;
import android.widget.BaseAdapter;
import android.widget.GridView;
import android.widget.ImageView;
import android.widget.Spinner;
import android.widget.Toast;


    public class ddsds extends Activity {
   Spinner vsel;
   ArrayList<String> vimage = new ArrayList<String>();
   ArrayList<String> all = new ArrayList<String>();
   ArrayList<String> himage = new ArrayList<String>();
   ArrayList<Integer> allid = new ArrayList<Integer>();   
   ArrayList<Integer> hid = new ArrayList<Integer>();
   ArrayList<Integer> vid = new ArrayList<Integer>();  
   ArrayList<Integer> tot = new ArrayList<Integer>();  
   ArrayList<String> spinner = new ArrayList<String>();
   GridView gv;

   @Override
   public void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.main);
       gv = (GridView) findViewById(R.id.gridView1);

       Class resources = R.drawable.class;
       java.lang.reflect.Field[] fields = resources.getFields();
        for(java.lang.reflect.Field field : fields)
       {
            try {
                   if(field.getName().contains("split"))
                   {
                       all.add(field.getName());
                       allid.add(field.getInt(fields));
                   }
                   if(field.getName().contains("splith"))
                       {
                           //String iname = field.getName();
                           himage.add(field.getName());
                           hid.add(field.getInt(fields));
                       }
                   if(field.getName().contains("splitv"))
                       {
                           vimage.add(field.getName());
                           vid.add(field.getInt(fields));
                       }
                       /*else
                       {
                           all.add(field.getName());
                           allid.add(field.getInt(fields));
                       }*/
                   }
                catch (IllegalArgumentException e) {
               // TODO Auto-generated catch block
               e.printStackTrace();
               } catch (IllegalAccessException e) {
               // TODO Auto-generated catch block
               e.printStackTrace();
               }
       }
        System.out.println("All arraylist-> " + allid);
        System.out.println("Horizontal arraylist-> " + hid);
        System.out.println("Vertical arraylist-> " + vid);
     //  String[] viewsel = {"All","Vertical","Horizontal"};
        spinner.add("All");
        spinner.add("Vertical");
        spinner.add("Horizontal");
       vsel = (Spinner) findViewById(R.id.spinner1); 
       ArrayAdapter<String> sadpater = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item,spinner);
       sadpater.setDropDownViewResource(android.R.layout.simple_spinner_item);
       vsel.setAdapter(sadpater);
       ArrayList<String> list ; 
       AppsAdapter adapter = null; 

       vsel.setOnItemSelectedListener(new OnItemSelectedListener() {

           public void onItemSelected(AdapterView<?> parent, View view,
                   int position, long id) {
               // TODO Auto-generated method stub
               //String item = parent.getItemAtPosition(position).toString();
               String item = parent.getSelectedItem().toString();

               if(item.equals("All"))
               {
                   list = allid;
               }
               if(item.equals("Vertical"))
               {
                   list = vid;
               }
                if(item.equals("Horizontal"));
               {
                   list = hid));
               }

               if (adapter = null ) {
                   adapter = new AppsAdapter(MainActivity.this, list);
                   gv.setAdapter(adapter);
               }
               adapter.notifyDataSetChanged();
           }

           public void onNothingSelected(AdapterView<?> view) {
               // TODO Auto-generated method stub

           }
       });
   }


   public class AppsAdapter extends BaseAdapter {
       private Context context;
       ArrayList<Integer> dirsTemp = new ArrayList<Integer>();
       public AppsAdapter(Context c,ArrayList<Integer> allid)
       {

           Log.d("In appsadapter1 all","Hii");
           dirsTemp = allid;

           context = c;

       }


       //---returns the number of images---

       public final int getCount() {

           return dirsTemp.size();


       }

        //---returns the ID of an item--- 

       public final Object getItem(int position) {
           return dirsTemp.get(position);
       }

       public final long getItemId(int position) {

           return position;
       }

       public View getView(int position, View convertView, ViewGroup parent) {
           // TODO Auto-generated method stub
           //final File f = (File) getItem(position);
           int i = (Integer) getItem(position);
           System.out.println("Dirstemp->"+dirsTemp);
           ImageView iv;
           if (convertView == null) 
           {
                   iv = new ImageView(context);
                   //iv.setPadding(5, 5, 5, 5);
           }

           else
           {
                   iv = (ImageView) convertView;
           }
           iv.setImageResource(dirsTemp.get(position));


           return iv;          
       }   
   }




}










}

这篇关于设置自定义适配器网格视图的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆