2012-10-25 12 views
5

Birisi bu SimpleAdapter içinde bir ImageView almak için bana doğru yönde işaret edebilir mi? TAG_IMAGE, Imageview olmalıdır. Bunu alıyorum: Tür missmatch: ImageView'dan int'ye dönüştürülemiyor. Ve evet ben bir noob'um. ileSimpleAdapter içinde bir ImageView istiyorum?

protected void onPostExecute(String file_url) { 
     // dismiss the dialog after getting all products 
     pDialog.dismiss(); 
     // updating UI from Background Thread 
     runOnUiThread(new Runnable() { 
      public void run() { 
       /** 
       * Updating parsed JSON data into ListView 
       * */ 
       ListAdapter adapter = new SimpleAdapter(
         AllProductsActivity.this, productsList, 
         R.layout.list_item, new String[] { TAG_PID, 
           TAG_NAME, TAG_PRICE, TAG_RANDOM, TAG_IMAGE },        
         new int[] { R.id.pid, R.id.name, R.id.price, 
           R.id.random, R.id.image }); 
       // Imageview to show 
       // updating listview 
       setListAdapter(adapter); 
      } 
     }); 

cevap

14

main.xml kodu

aşağıda verilen ile kod aşağıda verilmiştir

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="horizontal" 
> 
    <ImageView 
     android:id="@+id/flag" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:contentDescription="@string/hello" 
     android:paddingTop="10dp" 
     android:paddingRight="10dp" 
     android:paddingBottom="10dp" 
    /> 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:orientation="vertical" 
    > 
     <TextView 
      android:id="@+id/txt" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:textSize="15dp" 
     /> 

     <TextView 
      android:id="@+id/cur" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:textSize="10dp" 
     /> 
    </LinearLayout> 
</LinearLayout> 

MainActivity.java ile içerik kodunun altına

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="vertical" > 

    <TextView 
     android:id="@+id/textview" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
    /> 

    <ListView 
     android:id="@+id/listview" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
    /> 
</LinearLayout> 

listview_layout.xml verildi ve güncellemek

package com.example.list; 

import java.util.ArrayList; 
import java.util.HashMap; 
import java.util.List; 

import android.app.Activity; 
import android.os.Bundle; 
import android.widget.ListView; 
import android.widget.SimpleAdapter; 

public class MainActivity extends Activity { 

    // Array of strings storing country names 
    String[] countries = new String[] { 
     "India", 
     "Pakistan", 
     "Sri Lanka", 
     "China", 
     "Bangladesh", 
     "Nepal", 
     "Afghanistan", 
     "North Korea", 
     "South Korea", 
     "Japan" 
    }; 

    // Array of integers points to images stored in /res/drawable-ldpi/ 
    int[] flags = new int[]{ 
     R.drawable.india, 
     R.drawable.pakistan, 
     R.drawable.srilanka, 
     R.drawable.china, 
     R.drawable.bangladesh, 
     R.drawable.nepal, 
     R.drawable.afghanistan, 
     R.drawable.nkorea, 
     R.drawable.skorea, 
     R.drawable.japan 
    }; 

    // Array of strings to store currencies 
    String[] currency = new String[]{ 
     "Indian Rupee", 
     "Pakistani Rupee", 
     "Sri Lankan Rupee", 
     "Renminbi", 
     "Bangladeshi Taka", 
     "Nepalese Rupee", 
     "Afghani", 
     "North Korean Won", 
     "South Korean Won", 
     "Japanese Yen" 
    }; 

    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     // Each row in the list stores country name, currency and flag 
     List<HashMap<String,String>> aList = new ArrayList<HashMap<String,String>>(); 

     for(int i=0;i<10;i++){ 
      HashMap<String, String> hm = new HashMap<String,String>(); 
      hm.put("txt", "Country : " + countries[i]); 
      hm.put("cur","Currency : " + currency[i]); 
      hm.put("flag", Integer.toString(flags[i])); 
      aList.add(hm); 
     } 

     // Keys used in Hashmap 
     String[] from = { "flag","txt","cur" }; 

     // Ids of views in listview_layout 
     int[] to = { R.id.flag,R.id.txt,R.id.cur}; 

     // Instantiating an adapter to store each items 
     // R.layout.listview_layout defines the layout of each item 
     SimpleAdapter adapter = new SimpleAdapter(getBaseContext(), aList, R.layout.listview_layout, from, to); 

     // Getting a reference to listview of main.xml layout file 
     ListView listView = (ListView) findViewById(R.id.listview); 

     // Setting the adapter to the listView 
     listView.setAdapter(adapter); 
    } 
} 

Uygulamayı çalıştırın

+0

Bu çok kullanışlıdır. Teşekkür ederim. – Jirapong

+4

Bağdaştırıcının, bayrağı ImageView'ın src'si olarak ayarlaması gerektiğini ve TextViews için metni ayarlaması gerektiğini anlamıyorum. Hedef Görünümün türüne bakması ve bir varsayım yapması nedeniyle mi? eğer bir ImageView ise, ilgili haritalanmış değer, src olarak kullanılabilecek şekilde çizilebilir olmalıdır? – RTF

+0

@Code Bu, bağdaştırıcının bir ImageView'a başvurduğunu ve R.id.txt'in bir TextView'e başvurduğunu bilmediğini açıklamıyor. SimpleAdapter, başvurulan öğede bir tür iç gözlem gerçekleştirir ve sonra, öğe türüne bağlı olarak hangi özelliğin (metin veya src) ayarlanacağını sihirli bir şekilde bilir. Bu doğru mu? – lintmachine

İlgili konular