6

में छवि देखने के लिए छवि पर क्लिक करें यह एक ग्रिडव्यू है जो जेसन से छवि प्राप्त करता है। और यह ठीक काम करता है। मैं पूरी छवि दिखाने के लिए इस ग्रिडव्यू में छवि पर क्लिक करना चाहता हूं और इसे स्लाइड कर सकता हूं। मुझे लगता है कि इस समस्या का समाधान Viewpager का उपयोग किया जाता है।ग्रिडव्यू - व्यूपर

छवि दिखाने के लिए मैं ग्रिडव्यू में छवि कैसे क्लिक कर सकता हूं और स्लीड कर सकता हूं?

आप इस कोड को और अधिक आसान पढ़ सकते हैं। http://pastebin.com/Q8Ljt9yL

enter image description here

public class MainActivity extends Activity { 

public static final int DIALOG_DOWNLOAD_JSON_PROGRESS = 0; 
private ProgressDialog mProgressDialog; 
ArrayList<HashMap<String, Object>> MyArrList; 

@SuppressLint("NewApi") 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    // Permission StrictMode 
    if (android.os.Build.VERSION.SDK_INT > 9) { 
     StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build(); 
     StrictMode.setThreadPolicy(policy); 
    } 
    // Download JSON File 
    new DownloadJSONFileAsync().execute(); 
} 

@Override 
protected Dialog onCreateDialog(int id) { 
    switch (id) { 
    case DIALOG_DOWNLOAD_JSON_PROGRESS: 
     mProgressDialog = new ProgressDialog(this); 
     mProgressDialog.setMessage("Downloading....."); 
     mProgressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER); 
     mProgressDialog.setCancelable(true); 
     mProgressDialog.show(); 
     return mProgressDialog; 
    default: 
     return null; 
    } 
} 

public void ShowAllContent() { 
    final GridView gridView1 = (GridView) findViewById(R.id.gridView1); 
    gridView1.setAdapter(new ImageAdapter(MainActivity.this, MyArrList)); 
    gridView1.setOnItemClickListener(new OnItemClickListener() { 

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

      Toast.makeText(getApplicationContext(), "this is", Toast.LENGTH_SHORT).show(); 
     } 
    }); 
} 

public class ImageAdapter extends BaseAdapter { 
    private Context context; 
    private ArrayList<HashMap<String, Object>> MyArr = new ArrayList<HashMap<String, Object>>(); 

    public ImageAdapter(Context c, ArrayList<HashMap<String, Object>> myArrList) { 
     context = c; 
     MyArr = myArrList; 
    } 

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

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

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

    public View getView(int position, View convertView, ViewGroup parent) { 
     ViewHolder viewHolder; 
     View myView = convertView; 
     viewHolder = new ViewHolder(); 
     if (convertView == null) { 
      LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
      myView = inflater.inflate(R.layout.activity_column, null); 

      viewHolder.imageView = (ImageView) myView.findViewById(R.id.ColImgPath); 
      viewHolder.imageView.getLayoutParams().height = 120; 
      viewHolder.imageView.getLayoutParams().width = 120; 
      viewHolder.imageView.setPadding(5, 5, 5, 5); 
      viewHolder.imageView.setScaleType(ImageView.ScaleType.CENTER_CROP); 
      try { 
       viewHolder.imageView.setImageBitmap((Bitmap) MyArr.get(position).get("ImageThumBitmap")); 
      } catch (Exception e) { 
       viewHolder.imageView.setImageResource(android.R.drawable.ic_menu_report_image); 
      } 
     } 
     return myView; 
    } 
} 

private static class ViewHolder { 
    public ImageView imageView; 
} 

// Download JSON in Background 
public class DownloadJSONFileAsync extends AsyncTask<String, Void, Void> { 

    protected void onPreExecute() { 
     super.onPreExecute(); 
     showDialog(DIALOG_DOWNLOAD_JSON_PROGRESS); 
    } 

    @Override 
    protected Void doInBackground(String... params) { 

     String url = "http://192.168.10.101/adchara1/"; 
     JSONArray data; 
     try { 
      data = new JSONArray(getJSONUrl(url)); 
      MyArrList = new ArrayList<HashMap<String, Object>>(); 
      HashMap<String, Object> map; 

      for (int i = 0; i < data.length(); i++) { 
       JSONObject c = data.getJSONObject(i); 
       map = new HashMap<String, Object>(); 

       map.put("photo", (String) c.getString("photo")); 
       map.put("ImageThumBitmap",(Bitmap) loadBitmap(c.getString("photo"))); 

       // Full (for View Popup) 
       map.put("frame", (String) c.getString("frame")); 

       MyArrList.add(map); 
      } 

     } catch (JSONException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
     return null; 
    } 

    protected void onPostExecute(Void unused) { 
     ShowAllContent(); // When Finish Show Content 
     dismissDialog(DIALOG_DOWNLOAD_JSON_PROGRESS); 
     removeDialog(DIALOG_DOWNLOAD_JSON_PROGRESS); 
    } 
} 

/*** Get JSON Code from URL ***/ 
public String getJSONUrl(String url) { 
    StringBuilder str = new StringBuilder(); 
    HttpClient client = new DefaultHttpClient(); 
    HttpGet httpGet = new HttpGet(url); 
    try { 
     HttpResponse response = client.execute(httpGet); 
     StatusLine statusLine = response.getStatusLine(); 
     int statusCode = statusLine.getStatusCode(); 
     if (statusCode == 200) { // Download OK 
      HttpEntity entity = response.getEntity(); 
      InputStream content = entity.getContent(); 
      BufferedReader reader = new BufferedReader(new InputStreamReader(content)); 
      String line; 
      while ((line = reader.readLine()) != null) { 
       str.append(line); 
      } 
     } else { 
      Log.e("Log", "Failed to download file.."); 
     } 
    } catch (ClientProtocolException e) { 
     e.printStackTrace(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
    return str.toString(); 
} 

/***** Get Image Resource from URL (Start) *****/ 
private static final String TAG = "Image"; 
private static final int IO_BUFFER_SIZE = 4 * 1024; 

public static Bitmap loadBitmap(String url) { 
    Bitmap bitmap = null; 
    InputStream in = null; 
    BufferedOutputStream out = null; 

    try { 
     in = new BufferedInputStream(new URL(url).openStream(),IO_BUFFER_SIZE); 

     final ByteArrayOutputStream dataStream = new ByteArrayOutputStream(); 
     out = new BufferedOutputStream(dataStream, IO_BUFFER_SIZE); 
     copy(in, out); 
     out.flush(); 

     final byte[] data = dataStream.toByteArray(); 
     BitmapFactory.Options options = new BitmapFactory.Options(); 
     // options.inSampleSize = 1; 

     bitmap = BitmapFactory.decodeByteArray(data, 0, data.length,options); 
    } catch (IOException e) { 
     Log.e(TAG, "Could not load Bitmap from: " + url); 
    } finally { 
     closeStream(in); 
     closeStream(out); 
    } 
    return bitmap; 
} 

private static void closeStream(Closeable stream) { 
    if (stream != null) { 
     try { 
      stream.close(); 
     } catch (IOException e) { 
      android.util.Log.e(TAG, "Could not close stream", e); 
     } 
    } 
} 

private static void copy(InputStream in, OutputStream out) 
     throws IOException { 
    byte[] b = new byte[IO_BUFFER_SIZE]; 
    int read; 
    while ((read = in.read(b)) != -1) { 
     out.write(b, 0, read); 
    } 
} 
} 

उत्तर

2

अपने ही आप की जरूरत के रूप में डाउनलोड कर सकते हैं। बस ग्रिड व्यू की घटना पर क्लिक करें और दृश्य पेजर का उपयोग कर अगली स्क्रीन में छवि प्राप्त करें।

ग्रिड दृश्य छवियों की घटना पर क्लिक करें:

GridView gridView = (GridView) findViewById(R.id.gridview); 
     gridView.setAdapter(new ImageAdapter()); 
     gridView.setOnItemClickListener(new OnItemClickListener() { 
      @Override 
      public void onItemClick(AdapterView<?> parent, View view, 
        int position, long id) 
     { 
      HashMap<String, Object> selected = (HashMap<String, Object>) 

      gridView.getItemAtPosition(position); 

      } 
     }); 
2

सबसे पहले आप सभी ImageAdapter वर्ग 'विधि GetItem (पूर्णांक स्थिति) MyArr में "स्थिति" पर आइटम वापस करने के लिए लागू करने के लिए की है। इसके बाद, क्लिक श्रोता में, आप कुछ तरह

HashMap<String, Object> selected = (HashMap<String, Object>) gridView.getItemAtPosition(position); 
चयनित

आप अपने बिटमैप है कर सकते हैं।

+0

अधिक है कि तुलना में विस्तार कर सकते हैं डाउनलोड करने के लिए प्रयास करें। मुझे पता है कि मुझे एक और गतिविधि वर्ग और लेआउट बनाना होगा। लेकिन मुझे नहीं पता कि कोड कैसे करें। – kongkea

+1

क्या आप ITemClickListener के लिए कुछ कोड लिख सकते हैं और व्यूपागर क्लास – kongkea

2

इस class देखें आप

GridView gridView = (GridView) findViewById(R.id.gridview); 
     gridView.setAdapter(new ImageAdapter()); 
     gridView.setOnItemClickListener(new OnItemClickListener() { 
      @Override 
      public void onItemClick(AdapterView<?> parent, View view, 
        int position, long id) { 
       startImageGalleryActivity(position); 
      } 
     }); 

यहाँ आप एक ही उत्पादन है कि तुम क्या चाहता है मिल जाएगा पा सकते हैं।

तुम भी पूरा स्रोत कोड here

+1

लिंक के लिए काम नहीं कर रहा है, कृपया इसे ठीक करें। –

0

अपनी छवि के इस यूआरएल है?

-> map.put("photo", (String) c.getString("photo"));//on your main activity 

MyView

myView.setOnClickListener(new OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     HashMap<String, Object> result = new HashMap<String, Object>(); 
     result = MyArr.get(position); 
     Intent intent = new Intent(context, youractivitytarget.class); 
     intent.putExtra("photo", (String)result.get(MainActivity.PHOTO)); 
     context.startActivity(intent); 
    } 
}); 

पर onclick का उपयोग कर उसके बाद URL का उपयोग अपने क्लिक किया तस्वीर फिर से

संबंधित मुद्दे