2015-05-04 6 views
0

Я хочу загрузить изображение из тега файла XML <image> в ImageView.Загрузка из изображения из XML в ImageView

Файл макета:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="horizontal" 
    android:clickable="false"> 

    <LinearLayout 
     android:orientation="vertical" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content"> 

     <ImageView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:id="@+id/projectImage" /> 

     <TextView xmlns:android="http://schemas.android.com/apk/res/android" 
      android:id="@+id/jobtitle" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:padding="10dip" 
      android:textSize="14sp" 
      android:textStyle="bold" 
      android:text="jobtitle"> 
     </TextView> 

     <TextView xmlns:android="http://schemas.android.com/apk/res/android" 
      android:id="@+id/jobinfo" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:textSize="11sp" 
      android:textStyle="normal" 
      android:text="jobinfo" 
      android:paddingLeft="10dp"> 
     </TextView> 

    </LinearLayout> 

</LinearLayout> 

и mainActivity:

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" android:id="@+id/container" 
    android:layout_width="match_parent" android:layout_height="match_parent" 
    tools:context=".MainActivity" tools:ignore="MergeRootFrame" > 

    <LinearLayout 
     android:orientation="horizontal" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent"> 

     <ImageView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:id="@+id/imageView" /> 

     <ListView android:id="@+id/android:list" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      /> 

    </LinearLayout> 

</FrameLayout> 

На данный момент я смотрю, если файл уже существует, если нет, то скачать и разобрать его.

protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
    File file = new File(this.getFilesDir(), "Arbeitsauftrag_Bootsbau_Meier_vom_20150216.kx_job"); 
      if (file.exists()) { 

       XMLParser parser = new XMLParser(); 
       Document doc = parser.getDomElement(readFromFile("Arbeitsauftrag_Bootsbau_Meier_vom_20150216.kx_job")); 

       NodeList nodeListProject = doc.getElementsByTagName(KEY_PROJECT); 
       NodeList nodeListTasks = doc.getElementsByTagName(KEY_TASK); 

       //Schleife für Aufgaben 
       for (int i = 0; i < nodeListTasks.getLength(); i++) { 
        HashMap<String, String> map = new HashMap<>(); 
        Element e = (Element) nodeListTasks.item(i); 

        map.put(KEY_UUID_OBJ, parser.getValue(e, KEY_UUID_OBJ)); 
        map.put(KEY_TITLE, parser.getValue(e, KEY_TITLE)); 
        map.put(KEY_INFO, parser.getValue(e, KEY_INFO)); 
        map.put(KEY_OBJECT, parser.getValue(e, KEY_OBJECT)); 
        map.put(KEY_LOCATION, parser.getValue(e, KEY_LOCATION)); 
        map.put(KEY_OBJECT_ID, parser.getValue(e, KEY_OBJECT_ID)); 
        map.put(KEY_OBJECT_SNR, parser.getValue(e, KEY_OBJECT_SNR)); 
        map.put(KEY_REGISTRATION_ID, parser.getValue(e, KEY_REGISTRATION_ID)); 
        map.put(KEY_TASKIMAGE, parser.getValue(e, KEY_TASKIMAGE)); 
        map.put(KEY_TASK_HEADLINE, parser.getValue(e, KEY_TASK_HEADLINE)); 
        map.put(KEY_TASK_SUBJECT, parser.getValue(e, KEY_TASK_SUBJECT)); 
        map.put(KEY_TASK_ACTION, parser.getValue(e, KEY_TASK_ACTION)); 
        map.put(KEY_TASK_PRIORITY_COLOR, parser.getValue(e, KEY_TASK_PRIORITY_COLOR)); 
        map.put(KEY_TASK_STATUS, parser.getValue(e, KEY_TASK_STATUS)); 
        map.put(KEY_TASKIMAGE, parser.getValue(e,KEY_TASKIMAGE)); 

        taskItems.add(map); 
       } 

       // Schleife für Auftragsinfos 
       for (int i = 0; i < nodeListProject.getLength(); i++) { 

        // Neue HashMap erstellen 
        HashMap<String, String> map = new HashMap<>(); 
        Element e = (Element) nodeListProject.item(i); 

        // Jedes Kind-Knoten zur HashMap 
        map.put(KEY_UUID, parser.getValue(e, KEY_UUID)); 
        map.put(KEY_NAME, parser.getValue(e, KEY_NAME)); 
        map.put(KEY_JOBTITLE, parser.getValue(e, KEY_JOBTITLE)); 
        map.put(KEY_JOBINFO, parser.getValue(e, KEY_JOBINFO)); 


        //Hashmap zur ArrayList hinzufügen 
        projectItems.add(map); 
       } 

       ListAdapter adapter = new SimpleAdapter(ListViewActivity.this, projectItems, 
         R.layout.list_item_projects, 
         new String[]{KEY_JOBTITLE, KEY_JOBINFO}, 
         new int[]{R.id.jobtitle, R.id.jobinfo}); 

       setListAdapter(adapter); 
       //file.delete(); 


      } else { 
       DownloadXMLFiles dlxmlf = new DownloadXMLFiles(); 
       dlxmlf.execute(); 
      } 

Этот метод предназначен для декодирования строки base64:

public static Bitmap decodeBase64(String input) { 
     byte[] decodedByte = Base64.decode(input, Base64.DEFAULT); 
     return BitmapFactory.decodeByteArray(decodedByte, 0, decodedByte.length); 
    } 

Мой ImageView не в MainActivity.

Я ищу, как я могу поместить изображение от Base64 до Bitmap и установить его как изображение на моем ImageView?

P.S. мой ImageView не находится в том же макете, что и мой setContentView(R.layout.activity_main).

ответ

0

Создать следующий метод для преобразования кодированной строки Base64 в Bitmap

Bitmap decodeBase64(String input) { 
     try { 
      byte[] decodedByte = Base64.decode(input, 0); 
      return BitmapFactory.decodeByteArray(decodedByte, 0, 
        decodedByte.length); 
     } catch (Exception e) { 
      return null; 
     } 
    } 

Теперь использовать его следующим образом-

Bitmap imageBitmap = decodeBase64(strEncodedBitmap); 
imageView.setImageBitmap(imageBitmap); 
+0

я не могу использовать imageView.setImageBitmap (imageBitmap), потому что мой ImageView на other Layout as my contentView –

+0

Можете ли вы отправить еще какой-нибудь код, где ваш ImageView? –

+0

У меня есть 2 макета ... mainActivity и list_item_projects ... в моем ListViewActivity я установил контент: setContentView (R.layout.activity_main); Я думаю, что мне нужно поместить изображение в адаптер, но я не знаю, как ... –

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