2012-08-14 20 views
8

Voglio creare un GridView con immagini cliccabili ..Creazione Gridview con immagini cliccabili, Android

Quando mai un'immagine viene cliccato verrà mostrato un valore corrispondente di sotto di quella vista a griglia.

Design of that grid view should be something like this

Il problema che sto affrontando è nella progettazione di parte, non so come progettare una visualizzazione a griglia come questo .. ogni volta che cerco di fare che ho alcuni cattivi risultati .. non ho Android ui progettazione esperienza al momento.

Please Help!

+0

consultare questo link http://mytelcoit.com/2010/02/programming-android-create-icon-with-text-using-gridview-and-layout -inflater/http://android-coding.blogspot.in/2011/09/custom-gridview-ii-with-imageview-and.html – rajeshwaran

risposta

21

GridView è un ViewGroup che visualizza gli elementi in una bidimensionale, griglia scorrevole. Gli elementi della griglia vengono automaticamente inseriti nel layout utilizzando ListAdapter.

Per un'introduzione a come è possibile inserire dinamicamente le viste utilizzando un adattatore, leggere Layout dell'edificio con un adattatore.

http://developer.android.com/guide/topics/ui/declaring-layout.html#AdapterViews

e queste sono buone GridView tutorial vi aiuterà a

http://www.androidhive.info/2012/02/android-gridview-layout-tutorial/

http://www.mkyong.com/android/android-gridview-example/

e

http://developer.android.com/guide/topics/ui/layout/gridview.html

1

Prova questa

  1. Attività principale

    public class MainActivity extends AppCompatActivity { 
    List<String> list; 
        int[] imageId = { 
        R.drawable.a, 
        R.drawable.b, 
        R.drawable.c, 
        R.drawable.d, 
        R.drawable.e, 
        R.drawable.f, 
        }; 
         String[] web = { 
        "Google", 
        "Github", 
        "Instagram", 
        "Facebook", 
        "Flickr", 
        "Pinterest", 
        "Quora", 
        "Twitter", 
        "Vimeo", 
        "WordPress", 
        "Youtube", 
        "Stumbleupon", 
        "SoundCloud", 
        "Reddit", 
        "Blogger" 
    
        } ; 
        @Override 
        protected void onCreate(Bundle savedInstanceState) { 
        super.onCreate(savedInstanceState); 
        setContentView(R.layout.activity_main); 
        ImageAdapter adapter = new ImageAdapter(MainActivity.this,web, 
        imageId); 
        GridView grid=(GridView)findViewById(R.id.grid_view); 
        grid.setAdapter(adapter); 
        grid.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
    
        @Override 
        public void onItemClick(AdapterView<?> parent, View view, 
              int position, long id) { 
        } 
    }); 
    
    } 
    } 
    
    1. 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" 
      tools:context="com.example.mypc.grid.MainActivity"> 
      
      <GridView xmlns:android="http://schemas.android.com/apk/res/android" 
          android:id="@+id/grid_view" 
      android:layout_width="fill_parent" 
          android:layout_height="fill_parent" 
          android:numColumns="2" 
          android:columnWidth="90dp" 
          android:horizontalSpacing="10dp" 
      android:verticalSpacing="10dp" 
          android:gravity="center" 
          android:stretchMode="columnWidth" > 
          </GridView> 
          </LinearLayout> 
      
    2. classe ImageAdapter

      public class ImageAdapter extends BaseAdapter 
      { 
      private Context mContext; 
      private final int[] Imageid; 
      private final String[] web; 
          public ImageAdapter(Context c,String[] web,int[] Imageid) 
          { 
          mContext = c; 
          this.Imageid = Imageid; 
          this.web=web; 
      } 
      
      @Override 
      public int getCount() 
      { 
          return Imageid.length; 
      } 
      @Override 
      public Object getItem(int position) 
      { 
          return position; 
          } 
          @Override 
      public long getItemId(int position) 
      { 
          return 0; 
          } 
      @Override 
      public View getView(int position, View convertView, ViewGroup 
          parent) 
          { 
          LayoutInflater inflater = (LayoutInflater) 
           mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
           View gridView; 
           if (convertView == null) 
           { 
           gridView = new View(mContext); 
           // get layout from mobile.xml 
           gridView = inflater.inflate(R.layout.grid_layout, null); 
           // set value into textview 
           TextView textView = (TextView) 
           gridView.findViewById(R.id.grid_item_label); 
           textView.setText(web[position]); 
           // set image based on selected text 
           ImageView imageView = (ImageView) 
           gridView.findViewById(R.id.grid_item_image); 
           imageView.setImageResource(Imageid[position]); 
          } 
          else 
      { 
           gridView = (View) convertView; 
      } 
          return gridView; 
      } 
      } 
      
    3. grid_layout

      <?xml version="1.0" encoding="utf-8"?> 
      <LinearLayout 
      xmlns:android="http://schemas.android.com/apk/res/android" 
          android:layout_width="wrap_content" 
          android:layout_height="wrap_content" 
          android:padding="5dp" > 
      <ImageView 
          android:id="@+id/grid_item_image" 
          android:layout_width="100dp" 
          android:layout_height="100dp" 
          android:layout_marginRight="10dp" 
          > 
      </ImageView> 
      <TextView 
          android:id="@+id/grid_item_label" 
          android:layout_width="wrap_content" 
          android:layout_height="wrap_content" 
          android:text="@+id/label" 
          android:layout_marginTop="5px" 
          android:textSize="15px" > 
          </TextView> 
      
          </LinearLayout> 
      
Problemi correlati