2011-07-10 4 views
3

Veuillez guider ce qui ne va pas avec le code suivant qui ne crée pas l'activité de liste appropriée, y compris l'image dynamique et leur description à partir du serveur . Voici l'image enter image description heremise en place dynamique listactivity

comme il devrait être comme ça

enter image description here

Comme on peut voir une seule image est chargée sans description et pour le reste il n'y a pas d'image même il n'y a pas espace, s'il vous plaît guider ce qui est mal avec le code XML et. Voici le code

classe principale

public class Test extends ListActivity { 


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

     // install handler for processing gui update messages 
     ArrayList<HashMap<String, Object>> mylist = new ArrayList<HashMap<String, Object>>(); 
     JSONObject json = JSONfunctions.getJSONfromURL("http://midsweden.gofreeserve.com/proj/androidjson.php?identifier=123"); 


     try{ 

      JSONArray earthquakes = json.getJSONArray("services"); 

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

       map.put("id", e.getString("taskid")); 
       map.put("pic", "Service name : " + e.getString("employeepic")); 
       map.put("serviceinfo", "" + e.getString("employeename")+ " : "+ e.getString("starttime") 
         +" To " + e.getString("endtime")); 


       String imageid = e.getString("employeepic"); 


        ImageView iv = (ImageView) findViewById(R.id.image); 
        Bitmap b = getUserPic(imageid); 
        iv.setImageBitmap(b); 


        map.put("img",b); 
       mylist.add(map);    
      }  
     }catch(JSONException e)  { 
      Log.e("log_tag", "Error parsing data "+e.toString()); 
     } 

     SimpleAdapter adapter = new SimpleAdapter(this, mylist , R.layout.test,new String[] {"img", "servicename", "serviceinfo" }, 
         new int[] { R.id.image ,R.id.items, R.id.item_subtitle }); 

     setListAdapter(adapter); 

     final ListView lv = getListView(); 
     lv.setTextFilterEnabled(true); 
     lv.setOnItemClickListener(new OnItemClickListener() { 
      public void onItemClick(AdapterView<?> parent, View view, int position, long id) {    
       @SuppressWarnings("unchecked") 
       HashMap<String, String> o = (HashMap<String, String>) lv.getItemAtPosition(position);     
       Toast.makeText(Test.this, "ID '" + o.get("id") + "' was clicked.", Toast.LENGTH_SHORT).show(); 

      } 
     }); 

    } 

    public Bitmap getUserPic(String picID) { 
     String imageURL; 
     Bitmap bitmap = null; 
     Log.d("BITMAP", "Loading Picture"); 
     imageURL = "http://midsweden.gofreeserve.com/proj/admin/"+picID; 
     try { 
      bitmap = BitmapFactory.decodeStream((InputStream)new URL(imageURL).getContent()); 
     } catch (Exception e) { 
      Log.d("BITMAP", "Loading Picture FAILED"); 
      e.printStackTrace(); 
     } 
     return bitmap; 
    } 


} 

Voici la classe jsonfunction je pense qu'il est nécessaire de publier, mais seulement pour la compréhension pour les autres suit

public class JSONfunctions { 

    public static JSONObject getJSONfromURL(String url){ 
     InputStream is = null; 
     String result = ""; 
     JSONObject jArray = null; 

     //http post 
     try{ 
       HttpClient httpclient = new DefaultHttpClient(); 
       HttpPost httppost = new HttpPost(url); 
       HttpResponse response = httpclient.execute(httppost); 
       HttpEntity entity = response.getEntity(); 
       is = entity.getContent(); 

     }catch(Exception e){ 
       Log.e("log_tag", "Error in http connection "+e.toString()); 
     } 

     //convert response to string 
     try{ 
       BufferedReader reader = new BufferedReader(new InputStreamReader(is,"iso-8859-1"),8); 
       StringBuilder sb = new StringBuilder(); 
       String line = null; 
       while ((line = reader.readLine()) != null) { 
         sb.append(line + "\n"); 
       } 
       is.close(); 
       result=sb.toString(); 
     }catch(Exception e){ 
       Log.e("log_tag", "Error converting result "+e.toString()); 
     } 

     try{ 

      jArray = new JSONObject(result);    
     }catch(JSONException e){ 
       Log.e("log_tag", "Error parsing data "+e.toString()); 
     } 

     return jArray; 
    } 
} 

J'ai deux xml fichier autre que principal pour ce projet qui sont test.xml

<TextView 

    android:id="@+id/items" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:textAppearance="?android:attr/textAppearanceMedium" 
    android:padding="2dp" 
    android:textSize="20dp" /> 
    <TextView 
    android:id="@+id/item_subtitle" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:padding="2dp" 
    android:textSize="18dp" /> 
</LinearLayout> 

porte listplace

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent">  
    <ImageView 
     android:id="@+id/image" 
     android:layout_width="50dip" 
     android:layout_height="50dip" 
     android:scaleType="centerCrop"/> 
    <ListView 
     android:id="@id/android:list" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" 
     android:drawSelectorOnTop="false" /> 

    <TextView 
     android:id="@id/android:empty" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:text="No data"/> 

</LinearLayout> 

Je sais qu'il est lazylist disponible mais je veux mettre en place pour ma compréhension. Merci

+0

peut vous envoyer un croquis/diagramme de la façon dont vous voulez regarder lorsque vous travaillez. – Kenny

+0

@ Kenny Merci. Je l'ai mis à jour avec l'image dans la question – umar

Répondre

4

droite j'ai un autre exemple de projet pour vous que vous peut télécharger here. C'est trop de code pour poster donc j'ai zippé le projet afin que vous puissiez le télécharger. Si vous n'êtes pas sûr de la façon dont tout fonctionne, demandez-le! Prendre plaisir.

BTW il ressemble à ceci:

+0

Merci beaucoup. Je suis très reconnaissant envers vous. Vous avez résolu un gros problème pour moi. Encore une fois Merci – umar

0

J'ai eu le même problème il y a quelques jours. AFAIK vous devez créer un ArrayAdapter personnalisé. Ce poste m'a aidé tout à fait un peu:

http://www.softwarepassion.com/android-series-custom-listview-items-and-adapters/

..ce affichent semble aussi une bonne approche:

http://united-coders.com/phillip-steffensen/android-dealing-with-listactivities-customized-listadapters-and-custom-designed-0

+0

merci pour votre préoccupation, s'il vous plaît pouvez-vous me guider comment configurer la classe adaptateur pour mon code – umar