0

Итак, вот что. Я хотел немного поэкспериментировать. Итак, я написал эту программу, которая ищет изображения с расширением (.jpg) в моей папке mnt/shared/Newpictures в моем эмуляторе GennyMotion. В моей программе я записал имя файлов с расширением .jpg в адаптере массива String и путь к файлу в массиве строк пути к файлу. Теперь, вот часть, где я пуст, у меня есть путь, имя, и я могу получить позицию, нажав на список. Но как мне открыть изображение, когда я нажимаю на список. Я исследовал онлайн, и большинство кодов были слишком запутанными. Таким образом, может быть, кто-то может предложить мне более легкий подход. Это то, что я пробовал до сих пор. Благодарю.Как открыть изображение, нажав на список в андроиде?

package com.example.user.imageapp; 

import android.app.Activity; 
import android.content.Intent; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.AdapterView; 
import android.widget.ArrayAdapter; 
import android.widget.Button; 
import android.widget.ListView; 

import java.io.File; 
import java.util.ArrayList; 

/** 
* Created by user on 06-08-2015. 
*/ 


public class Splash extends Activity { 
    Button load; 
    String s; 
    private ListView mainList; 
    private String[] FilePathStrings; 

    ArrayList<String>filesinFolder = GetFiles("/mnt/shared/NewPictures"); 



    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.splash); 
     // load = (Button)findViewById(R.id.Load); 
     mainList = (ListView) findViewById(R.id.imagelist); 
     ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,filesinFolder); 

     mainList.setAdapter(adapter); 

     mainList.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
      @Override 
      public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) { 
       //what do i put here 


      } 
     }); 




    } 


    public ArrayList<String> GetFiles(String DirectoryPath) 
    { 
     ArrayList<String> MyFiles = new ArrayList<String>(); 
     File f = new File(DirectoryPath); 
     f.mkdirs(); 

     File[] files = f.listFiles(); 

     FilePathStrings = new String[files.length]; 

     for (int i = 0; i < files.length; i++) { 
      // Get the path of the image file 
      if(files[i].getName().contains(".jpg")) { 
       FilePathStrings[i] = files[i].getAbsolutePath(); 
       // Get the name image file 
       MyFiles.add(files[i].getName()); 

      } 
     } 



     return MyFiles; 


    } 
} 

ответ

0

Простым способом достижения этого было бы создать диалог, содержащий изображение, а затем установить образ изображения в файл. Что-то, как это должно сделать работу:

public void onItemclick(AdapterView<?> adapterView, View view, int pos, long id){ 
    String filePath = filesInFolder.get(pos); 
    AlertDialog.Builder builder = new AlertDialog.Builder(this); 
    LayoutInflater inflater = getLayoutInflater(); 
    View view = inflater.inflate(R.layout.dialog_img_preview, null); 
    builder.setView(view); 
    ImageView imgView = (ImageView)view.findViewById(R.id.preview_imgview); 
    imgView.setImageBitmap(BitmapFactory.decodeFile(filePath)); 
    AlertDialog dialog = builder.create(); 
    dialog.show(); 
} 
1

Вот простой пример, как вы можете просмотреть изображение, нажав на GridView, но вы можете изменить ListView в XML-файле.

Это экран сетки.

GridViewActivity.java

public class GridViewActivity extends Activity { 

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

     GridView gridview = (GridView) findViewById(R.id.gridview); 
     gridview.setAdapter(new ImageAdapter(GridViewActivity.this)); 

     gridview.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
      public void onItemClick(AdapterView<?> parent, View v, int position, long id) { 
       // Send intent to SingleViewActivity 
       Intent i = new Intent(getApplicationContext(), SingleViewActivity.class); 

       // Pass image index 
       i.putExtra("id", position); 
       startActivity(i); 
      } 
     }); 
    } 
} 

Этот класс будет отображать изображение на одной странице.

SingleViewActivity.java

public class SingleViewActivity extends Activity { 

    ImageLoader imageLoader = ImageLoader.getInstance(); 
    private DisplayImageOptions options; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.single_view); 

     options = new DisplayImageOptions.Builder().cacheInMemory(true) 
       .cacheOnDisk(true).considerExifParams(true) 
       .showImageForEmptyUri(R.mipmap.ic_launcher) 
       .imageScaleType(ImageScaleType.IN_SAMPLE_POWER_OF_2) 
       .bitmapConfig(Bitmap.Config.RGB_565).build(); 

     // Get intent data 
     Intent i = getIntent(); 

     // Selected image id 
     int position = i.getExtras().getInt("id"); 
     ImageAdapter imageAdapter = new ImageAdapter(this); 

     ImageView imageView = (ImageView) findViewById(R.id.SingleView); 
     //imageView.setImageResource(imageAdapter.mThumbnames[position]); 
     imageLoader.displayImage(imageAdapter.mThumbnames[position],imageView,options); 
    } 
} 

я использовал некоторые случайные изображения из Интернета. Эта же концепция используется в списке для отображения изображения.

ImageAdapter.java

public class ImageAdapter extends BaseAdapter { 

    private Context mContext; 
    private LayoutInflater layoutInflater; 
    ImageLoader imageLoader = ImageLoader.getInstance(); 
    private DisplayImageOptions options; 

    // Constructor 
    public ImageAdapter(Context c) { 
     mContext = c; 
     layoutInflater = LayoutInflater.from(mContext); 
     options = new DisplayImageOptions.Builder().cacheInMemory(true) 
       .cacheOnDisk(true).considerExifParams(true) 
       .showImageForEmptyUri(R.mipmap.ic_launcher) 
       .imageScaleType(ImageScaleType.IN_SAMPLE_POWER_OF_2) 
       .bitmapConfig(Bitmap.Config.RGB_565).build(); 
    } 

    public int getCount() { 
     return mThumbnames.length; 
    } 

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

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

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

     ViewHolder1 holder; 
     if (convertView == null) { 
      convertView = layoutInflater.inflate(R.layout.grideview_item, null); 
      holder = new ViewHolder1(); 
      holder.image = (ImageView) convertView.findViewById(R.id.imageView); 
      convertView.setTag(holder); 
     } else { 
      holder = (ViewHolder1) convertView.getTag(); 
     } 


     // Load image, decode it to Bitmap and display Bitmap in ImageView (or any other view 
     // which implements ImageAware interface) 

     //imageLoader.displayImage("drawable://" + mThumbIds[position], holder.image); 
     imageLoader.displayImage(mThumbnames[position], holder.image, options); 
     //holder.image.setImageDrawable(mContext.getResources().getDrawable(mThumbIds[position])); 
     return convertView; 
    } 

    public static class ViewHolder1 { 
     ImageView image; 
    } 

    // Keep all Images in array 
    /* public Integer[] mThumbIds = { 
      R.drawable.ab, R.drawable.ac, 
      R.drawable.ad, R.drawable.ae 

    };*/ 
    public String[] mThumbnames = { 
      "http://cdn2.ubergizmo.com/wp-content/uploads/2012/05/android_lock.jpg", 
      "http://cdn2.ubergizmo.com/wp-content/uploads/2012/05/android_lock.jpg", 
      "http://cdn2.ubergizmo.com/wp-content/uploads/2012/05/android_lock.jpg", 
      "http://cdn2.ubergizmo.com/wp-content/uploads/2012/05/android_lock.jpg", 
      "http://cdn2.ubergizmo.com/wp-content/uploads/2012/05/android_lock.jpg", 
      "http://cdn2.ubergizmo.com/wp-content/uploads/2012/05/android_lock.jpg", 
      "http://cdn2.ubergizmo.com/wp-content/uploads/2012/05/android_lock.jpg", 
      "http://cdn2.ubergizmo.com/wp-content/uploads/2012/05/android_lock.jpg" 

    }; 
} 

gridview_item.xml

<?xml version="1.0" encoding="utf-8"?> 
    <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_gravity="center_horizontal"> 

    <ImageView 
     android:id="@+id/imageView" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_gravity="left" 
     android:paddingBottom="5dp" 
     android:paddingLeft="5dp" 
     android:paddingRight="5dp" 
     android:paddingTop="10dp" 
     android:scaleType="fitXY" /> 

    <TextView 
     android:id="@+id/textView2" 
     android:layout_width="match_parent" 
     android:layout_height="30dp" 
     android:layout_gravity="center|bottom" 
     android:layout_marginBottom="5dip" 
     android:background="#80000000" 
     android:gravity="center" 
     android:text="images" 
     android:textColor="#000000" 
     android:textSize="20dp" /> 
</FrameLayout> 
Смежные вопросы