当前位置: 代码迷 >> Android >> ListView中的位图imageview
  详细解决方案

ListView中的位图imageview

热度:90   发布时间:2023-08-04 12:19:08.0

我目前正在尝试将图像集成到当前字符串的对象中。 但是,图像是在api中与其余字符串同时返回的url。 因此需要检索图像,并将其传递到对象中,以便适配器填充列表视图中的图像视图。 对不起,如果那令人困惑!

ListViewLoader如下:

   private class ListViewLoaderTask extends AsyncTask<String, Void, SimpleAdapter> {

    JSONObject jObject;
    /** Doing the parsing of xml data in a non-ui thread */
    @Override
    protected SimpleAdapter doInBackground(String... strJson) {
        List<HashMap<String, String>> properties = null;

        try{
            PropertiesParser propertiesParser = new PropertiesParser();
            jObject = new JSONObject(strJson[0]);

            /** Getting the parsed data as a List construct */
            properties = propertiesParser.parse(jObject);
        }catch(Exception e) {
            Toast.makeText(MainActivity.this, e.toString(), Toast.LENGTH_LONG).show();
        }

        /** Keys used in Hashmap */
        String[] from = { "image", "numBedrooms","propertyType","marketingStatus","price","applicationStatus","displayableAddress","listingId"};

        /** Ids of views in listview_layout */
        int[] to = { R.id.image, R.id.numBedrooms, R.id.propertyType, R.id.marketingStatus, R.id.price, R.id.applicationStatus, R.id.displayableAddress, R.id.listingId};

        Log.d(TAG, properties.toString());
        /**
         *  Instantiating an adapter to store each item
         *  R.layout.listview_layout defines the layout of each item
         */
        SimpleAdapter adapter = new SimpleAdapter(getBaseContext(), properties, R.layout.properties_layout, from, to);

        return adapter;
    }

    /** Invoked by the Android system on "doInBackground" is executed completely */
    /** This will be executed in ui thread */
    @Override
    protected void onPostExecute(SimpleAdapter adapter) {

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

        listView.setAdapter(adapter);
        listView.setOnItemClickListener(new ListClickHandler());

        InputMethodManager imm = (InputMethodManager) getSystemService(Activity.INPUT_METHOD_SERVICE);
        imm.toggleSoftInput(InputMethodManager.HIDE_IMPLICIT_ONLY, 0);
    }
}

属性解析器如下:

 import android.util.Log; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; public class PropertiesParser { private static final String TAG = PropertiesParser.class.getSimpleName(); /** Receives a JSONObject and returns a list */ public List<HashMap<String,String>> parse(JSONObject jObject){ JSONObject jembedded = null; JSONArray jProperties = null; try { // Retrieves all the elements in the '_embedded' array jembedded = jObject.getJSONObject("_embedded"); jProperties = jembedded.getJSONArray("items"); } catch (JSONException e) { e.printStackTrace(); } return getProperties(jProperties); } private List<HashMap<String, String>> getProperties(JSONArray jProperties){ int propertyCount = jProperties.length(); List<HashMap<String, String>> propertyList = new ArrayList<HashMap<String,String>>(); HashMap<String, String> property = null; /** Taking each property, parses and adds to list object */ for(int i=0; i<propertyCount;i++){ try { /** Call getProperty with property JSON object to parse the property */ property = getProperty((JSONObject)jProperties.get(i)); propertyList.add(property); } catch (JSONException e) { e.printStackTrace(); } } return propertyList; } /** Parsing the Property JSON object */ private HashMap<String, String> getProperty(JSONObject jProperty) { HashMap<String, String> property = new HashMap<String, String>(); String applicationStatus = ""; String marketingStatus = ""; String numBedrooms = ""; String propertyType = ""; String price = ""; String displayableAddress = ""; String listingId = ""; JSONObject revisions = null; JSONObject currentRevision = null; JSONObject extra = null; JSONObject address = null; try { // Populate details into array.. listingId = jProperty.getString("id"); applicationStatus = jProperty.getString("application_status"); marketingStatus = jProperty.getString("marketing_status"); revisions = jProperty.getJSONObject("_embedded"); currentRevision = revisions.getJSONObject("current_revision"); extra = currentRevision.getJSONObject("_embedded"); address = extra.getJSONObject("address"); numBedrooms = currentRevision.getString("number_of_beds"); propertyType = currentRevision.getString("property_type"); price = currentRevision.getString("price"); displayableAddress = address.getString("line_one") + ", " + address.getString("post_code"); property.put("listingId", listingId); property.put("applicationStatus", applicationStatus); property.put("marketingStatus", marketingStatus); property.put("numBedrooms", numBedrooms + " bedroom(s)"); property.put("propertyType", propertyType); property.put("price", price); property.put("displayableAddress", displayableAddress); Log.d(TAG, property.toString()); } catch (JSONException e) { e.printStackTrace(); } return property; } } 

我尝试在下面的链接中集成教程,但无法弄清楚如何将其与适配器一起使用: :

对不起,如果需要进一步的信息,请告诉我。

您可以在适配器中传递字符串并使用库,如下所示:

Picasso.with(context).load(yourStringUrl).into(imageView);

填充图像视图。

  相关解决方案