2017-02-07 2 views
0

Ich habe ein Array von Bildern, und wollte Bild von ihm anzeigen, um Dialog zu alarmieren, wenn wir auf Rasterelement klicken.Wie bekomme ich Bildansicht von Rasterlayout zu Alarmdialog

Hier ist meine Klasse:

mainactivity.java

package glassfibre.hospital2; 
import android.os.Bundle; 
import android.app.Activity; 
import android.support.v4.app.FragmentActivity; 
import android.view.View; 
import android.widget.AdapterView; 
import android.widget.GridView; 
import android.widget.Toast; 

public class MainActivity extends FragmentActivity 
{ 
    GridView grid; 
    String[] web = { 
     "Food", 
     "Doctor", 
     "Water", 
     "Feel Cold", 
     "Adjust Bed", 
     "Toilet" 

} ; 
int[] imageId = { 
     R.drawable.food, 
     R.drawable.doctor, 
     R.drawable.water2, 
     R.drawable.lowtemp, 
     R.drawable.bed, 
     R.drawable.toilet 
}; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    CustomGrid adapter = new CustomGrid(MainActivity.this, web, imageId); 
    grid=(GridView)findViewById(R.id.grid); 
    grid.setAdapter(adapter); 
    grid.setOnItemClickListener(new AdapterView.OnItemClickListener() { 

     @Override 
     public void onItemClick(AdapterView<?> parent, View view, 
           int position, long id) { 
      Toast.makeText(MainActivity.this, "You Clicked at " +web[+  position], Toast.LENGTH_SHORT).show(); 
      mydialog dialog = new mydialog(); 

      dialog.show(getSupportFragmentManager(),"my_dialog"); 
     } 
    }); 
} 
} 

CustomGrid.java

package glassfibre.hospital2; 

import android.content.Context; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.BaseAdapter; 
import android.widget.ImageView; 
import android.widget.TextView; 

public class CustomGrid extends BaseAdapter{ 
private Context mContext; 
private final String[] web; 
final int[] Imageid; 

public CustomGrid(Context c,String[] web,int[] Imageid) { 
    mContext = c; 
    this.Imageid = Imageid; 
    this.web = web; 
} 

@Override 
public int getCount() { 

    return web.length; 
} 

@Override 
public Object getItem(int position) { 
    return null; 
} 

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

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    View grid; 
    LayoutInflater inflater = (LayoutInflater) mContext 
      .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

    if (convertView == null) { 
     grid = new View(mContext); 
     grid = inflater.inflate(R.layout.grid_single, null); 
     TextView textView = (TextView) grid.findViewById(R.id.grid_text); 
     ImageView imageView = (ImageView)grid.findViewById(R.id.grid_image); 
     textView.setText(web[position]); 
     imageView.setImageResource(Imageid[position]); 
    } else { 
     grid = (View) convertView; 
    } 
    return grid; 
} 
} 

grid_single.xml

<RelativeLayout 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="wrap_content" 
android:layout_height="wrap_content" 
android:padding="5dp" > 

<ImageView 
    android:id="@+id/grid_image" 
    android:src="@drawable/food" 
    android:layout_width="150dp" 
    android:layout_height="150dp"> 
</ImageView> 

<TextView 
    android:id="@+id/grid_text" 
    android:text="@string/food" 
    android:layout_width="150dp" 
    android:layout_height="wrap_content" 
    android:layout_below="@id/grid_image" 
    android:gravity="center" 
    android:textSize="20sp" > 
</TextView> 

</RelativeLayout> 

mydialog.java

package glassfibre.hospital2; 

import android.app.Activity; 
import android.app.AlertDialog; 
import android.app.Dialog; 
import android.content.DialogInterface; 
import android.os.Bundle; 
import android.support.annotation.NonNull; 
import android.support.annotation.Nullable; 
import android.support.v4.app.DialogFragment; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.Button; 
import android.widget.GridView; 
import android.widget.ImageView; 

import java.util.zip.Inflater; 

import static android.R.attr.gridViewStyle; 
import static android.R.attr.id; 
import static android.R.attr.thumbPosition; 
import static glassfibre.hospital2.R.layout.grid_single; 


public class mydialog extends DialogFragment implements View.OnClickListener 
{ 
Button bt; 
ImageView iv; 
CustomGrid cg; 

@Nullable 
@Override 
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup   container, @Nullable Bundle savedInstanceState) { 
    View view=inflater.inflate(R.layout.my_dialog,null); 
    bt=(Button)view.findViewById(R.id.button); 
    bt.setOnClickListener(this); 
    iv= (ImageView) view.findViewById(R.id.imageView); 
    setCancelable(false); 
    AlertDialog.Builder builder=new AlertDialog.Builder(getActivity()); 

// > here i wanted to set image which i click on grid view 

    return view; 
} 

@Override 
public void onClick(View view) 
{ 
    if(view.getId()==R.id.button) 
    { 
     dismiss(); 
    } 
} 
} 

my_dialog.xml

<?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:orientation="vertical" android:layout_width="match_parent" 
android:layout_height="match_parent"> 

<TextView 
    android:text="I want" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentTop="true" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentStart="true" 
    android:layout_marginTop="20dp" 
    android:id="@+id/textView3" 
    android:layout_alignParentRight="true" 
    android:layout_alignParentEnd="true" 
    android:gravity="center" 
    android:textSize="20dp"/> 

<ImageView 
    android:layout_width="150dp" 
    android:layout_height="150dp" 
    app:srcCompat="@drawable/food" 
    android:id="@+id/imageView" 
    android:layout_marginTop="19dp" 
    android:layout_below="@+id/textView3" 
    android:layout_centerHorizontal="true" /> 

<Button 
    android:text="OK" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_below="@+id/imageView" 
    android:layout_centerHorizontal="true" 
    android:layout_marginTop="12dp" 
    android:id="@+id/button" /> 

</RelativeLayout> 

ich eine Reihe von Bildern haben, und wollte Bild aus, um es anzuzeigen, Dialog zu alarmieren, wenn wir klicken auf Rasterelement.

+0

es Fehler zeigen tut, bye die Art und Weise mein Problem –

Antwort

0

Sie so etwas:

grid.setOnItemClickListener(new AdapterView.OnItemClickListener() { 

    @Override 
    public void onItemClick(AdapterView<?> parent, View view, 
          int position, long id) { 
     Toast.makeText(MainActivity.this, "You Clicked at " +web[+  position], Toast.LENGTH_SHORT).show(); 
     mydialog dialog = new mydialog(); 
     int imageResource = imageId[position]; 
     dialog.setImageResource(imageResource); 
     dialog.show(getSupportFragmentManager(),"my_dialog"); 

    } 
}); 

Und in Ihrem myDialog Klasse int Variable

private int imageResource; 

erklären und ein Verfahren erstellen:

public void setImageResource(int imageResource) { 
    this.imageResource = imageResource; 
} 

jetzt können Sie Bildressource auf Bildansicht in OnCreateView-Methode von Mydialog Klasse

+0

Dank gelöst bekommen für Ihre Zeit @piyush :) –

0

In Ihrer myDialog Klasse, sondern nur eine Setter-Methode hat, die die Auslosungs Resource id speichert, wie unten

public void setImageIdToDisplay(int aDrawableId) { 
    mDrawableId = aDrawableId; 
} 

und in Ihrer oncreateview Methode der myDialog Klasse gezeigt, setzen Sie einfach das Bild Ressource-ID zu dem Imageview

iv.setImageResource(mDrawableId); 

und in Ihrem MainActivity ‚s onItemClick listner von gridview, vorbei an der ziehbar Ressource-ID, wie unten

gezeigt
grid.setOnItemClickListener(new AdapterView.OnItemClickListener() { 

    @Override 
    public void onItemClick(AdapterView<?> parent, View view, 
          int position, long id) { 
     Toast.makeText(MainActivity.this, "You Clicked at " +web[+  position], Toast.LENGTH_SHORT).show(); 
     mydialog dialog = new mydialog(); 
     dialog.setImageIdToDisplay(imageId[position]); 

     dialog.show(getSupportFragmentManager(),"my_dialog"); 

    } 
}); 
+0

vielen Dank geben .... es funktioniert gut :) –

+0

@AbhijeetBhagat wenn es gut funktioniert, dann bitte Akzeptiere die Antwort und schließe dieses Problem –

Verwandte Themen