2014-02-17 5 views
0

Я могу заполнить элементы списка с помощью URI изображений с моей камеры. Как я могу отображать точные изображения в виде элементов списка.как заполнить ListView изображениями с камеры

следующий список, который я использую (элемент списка представляет собой текстовое представление). Я хочу сделать то же самое с изображением.

ListView listview ; 
ArrayList<String> list = new ArrayList<String>(); 
private File getOutputMediaFile(){ 

    File mediaStorageDir = new File(imgLink); 

    if (! mediaStorageDir.exists()){ 
     if (! mediaStorageDir.mkdirs()){ 
      Log.d("MyCameraApp", "failed to create directory"); 
      return null; 
     } 
    } 

    // Create a media file name 
    String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date()); 
    File mediaFile; 
     mediaFile = new File(mediaStorageDir.getPath() + File.separator + 
     "IMG_"+ timeStamp + ".jpg");} 

public void onPictureTaken(byte[] data, Camera camera) { 

     File pictureFile = getOutputMediaFile(); 
     if (pictureFile == null){ 
      Log.d(TAG, "Error creating media file, check storage permissions "); 
      return; 
     } 
     try { 
      FileOutputStream fos = new FileOutputStream(pictureFile); 
      fos.write(data); 
      fos.close(); 
      } catch (FileNotFoundException e) { 
      Log.d(TAG, "File not found: " + e.getMessage()); 
     } catch (IOException e) { 
      Log.d(TAG, "Error accessing file: " + e.getMessage()); 
      } 

     if (list.contains(pictureFile.toString())) 
     { 
      System.out.println(pictureFile+ " -> already present"); 
     } 
     else 
     { 
      list.add(pictureFile.toString()); 
      System.out.println(pictureFile + " added"); 
     } 
     polulateList();} 

public void polulateList() 
{ 

    ArrayAdapter<String> listAdapter = new ArrayAdapter<String>(this,R.layout.list_item, list); 
    listview.setAdapter(listAdapter); 

} 
+0

это ват я использую "list_item.xml" sisir

+0

в list_item.xml добавьте одно изображение. А в CustomAdapter используйте «imageView.setImageURI (list.get (position))»; –

+0

'code' 'code' – sisir

ответ

0
protected void populateMyList(File pictureFile) { 
    // TODO Auto-generated method stub 


     String[] s = pictureFile.toString().split("/"); 
     String caption = s[7]; 
     mylist.add(new PopulateList(Uri.fromFile(pictureFile), caption)); 
     listAdapter = new MyListAdapter(); 
     listview.setAdapter(listAdapter); 


} 
public class MyListAdapter extends ArrayAdapter<PopulateList> { 

    public MyListAdapter(){ 
     super(CameraActivity.this, R.layout.img_list,mylist); 

    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     // TODO Auto-generated method stub 

     //inflate the view 
     View myView = convertView; 
     if (myView == null){ 
      myView = getLayoutInflater().inflate(R.layout.img_list, parent , false); 
     } 

     //populate the list 
     PopulateList imageTaken = mylist.get(position); 

     ImageView imgView = (ImageView)myView.findViewById(R.id.img); 

     imgView.setImageURI(imageTaken.getLink()); 
     System.out.println(imgLink+imageTaken.getCaption()); 
     /*TextView txtView = (TextView)findViewById(R.id.caption); 
     txtView.setVisibility(View.VISIBLE); 
     txtView.setText(imageTaken.getCaption());*/ 

     return myView; 

    }  
0

при вставке элемента в списке, просто позвоните listAdapter.notifyDataSetChanged();

+0

Работа в этом направлении – sisir

0
 @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     // TODO Auto-generated method stub 

     // inflate the view 
     View myView = convertView; 
     if (myView == null) { 
      myView = getLayoutInflater().inflate(R.layout.img_list, parent, 
        false); 
     } 
     // populate the list 
     PopulateList imageTaken = mylist.get(position); 
     ImageView imgView = (ImageView) myView.findViewById(R.id.img); 
     imgView.setImageURI(imageTaken.getLink()); 
     System.out.println(imgLink + imageTaken.getCaption()); 
     /* 
     * TextView txtView = (TextView)findViewById(R.id.caption); 
     * txtView.setVisibility(View.VISIBLE); 
     * txtView.setText(imageTaken.getCaption()); 
     */ 

     return myView; 

    } 
Смежные вопросы