2016-05-31 3 views
0

Ich verwende eine Rasteransicht, um Bilder mit Glide anzuzeigen. Wie kann ich ein ausgewähltes Bild im Raster markieren? Außerdem muss ich den Benutzer darauf beschränken, nur ein Bild auszuwählen. Wenn der Benutzer auf ein weiteres Bild klickt, sollte das erste Bild deaktiviert werden.How to Highlite geklickt/ausgewählt Raster in Rasteransicht

Hier ist meine XML-Datei

<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/galleryGridView" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:columnWidth="280dp" 
     android:gravity="center" 
     android:horizontalSpacing="2dp" 
     android:numColumns="3" 
     android:padding="2dp" 
     android:stretchMode="columnWidth" 
     android:verticalSpacing="2dp" 
     android:listSelector="@drawable/selected_grid"> 
    </GridView> 

</RelativeLayout> 

und Java-Code

GridView gallery = (GridView) findViewById(R.id.galleryGridView); 

     gallery.setAdapter(new ImageAdapter(this)); 

     gallery.setOnItemClickListener(new OnItemClickListener() { 

      @Override 
      public void onItemClick(AdapterView<?> arg0, View arg1, 
            int position, long arg3) { 

         // Help me here 

      } 
     }); 
    } 

Adapter

private class ImageAdapter extends BaseAdapter { 

     /** The context. */ 
     private Activity context; 

     /** 
     * Instantiates a new image adapter. 
     * 
     * @param localContext 
     *   the local context 
     */ 
     public ImageAdapter(Activity localContext) { 
      context = localContext; 
      images = getAllShownImagesPath(context); 
     } 

     public int getCount() { 
      return images.size(); 
     } 

     public Object getItem(int position) { 
      return position; 
     } 

     public long getItemId(int position) { 
      return position; 
     } 

     public View getView(final int position, View convertView, 
          ViewGroup parent) { 

      if (convertView == null) { 
       picturesView = new ImageView(context); 
       picturesView.setScaleType(ImageView.ScaleType.FIT_CENTER); 
       picturesView 
         .setLayoutParams(new GridView.LayoutParams(270, 270)); 

      } else { 
       picturesView = (ImageView) convertView; 
      } 

      Glide.with(context).load(images.get(position)) 
        .placeholder(R.mipmap.ic_launcher).centerCrop() 
        .into(picturesView); 

      return picturesView; 
     } 
+0

fügen Sie Ihren Code von ImageAdapter – Pavya

+0

Sie es innerhalb Adapter verarbeiten kann – mdDroid

+0

list_selector.xml

<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_pressed="false" android:drawable="@color/yourcolor" /> <item android:drawable="@color/transparent" /> </selector> 

und setzen listSelector Ihrer gridview machen @ Pravin ImageAdapter hinzugefügt. – Ramesh

Antwort

0

Sie von so etwas wie dieses

gallery.setOnItemClickListener(new OnItemClickListener() { 

     @Override 
     public void onItemClick(AdapterView<?> arg0, View arg1, 
           int position, long arg3) { 


     for(int i = 0; i < arg0.getChildCount(); i++) 
     { 
      if(i == position) 
       arg0.getChildAt(i).setBackgroundColor(Color.BLUE); 
      else 
       arg0.getChildAt(i).setBackgroundColor(Color.TRANSPARENT); 

     } 

     } 
    }); 

verwalten

oder 2. Art und Weise nur eine einfache Auswahl für gridview wie

android:listSelector="@drawable/list_selector"

+0

Keine der Methoden funktioniert :( – Ramesh

+0

was war das Problem.? –

+0

sie haben nichts. Es hebt nichts hervor. Farbe wird hinter dem Bild, so dass es nicht sichtbar ist. Für gif Bilder kann ich die Farbe sehen. – Ramesh