开发者

setting up dynamic listactivity

开发者 https://www.devze.com 2023-03-19 07:35 出处:网络
Please guide whats wrong with the following code that its not creating proper list activity including dynamic image and their description from server

Please guide whats wrong with the following code that its not creating proper list activity including dynamic image and their description from server output. Here is the image

setting up dynamic listactivity

as it should be like this

setting up dynamic listactivity

As it can be seen only one image is loaded with no descripti开发者_运维百科on and for the rest there are no image even there is no space , please guide whats wrong with the xml and code . Here is the code

main class

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;
    }


}

Here is the jsonfunction class i think there is need to post but just for the understanding for others to follows

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;
    }
}

I have two xml file other then main for this project which are 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>

listplace holder

<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>

I know there is lazylist available but i want to set this up for my understanding . Thanks


Right i've got another example project for you which you can dowload here. Its too much code to post so i've zipped up the project so you can download it. If your not sure how anything works just ask! Enjoy.

BTW it looks like this:

setting up dynamic listactivity


I had the same issue a few days ago. AFAIK you need to create a custom ArrayAdapter. This post helped me out quite a bit:

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

..this post also seems like a good approach:

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

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号