0

Androidエミュレータ3.1に画像を表示しようとしていますが、問題が発生しています。ListViewに表示できるのはURLのみです。私はローカルサーバーを使用しており、URLをmysqlデータベースに保存してphpを渡しましたが、問題はandroidにあります。

1)画像のURLを画像に変換し、テキストを含むListViewに表示する必要があります。以下のコードをご覧ください。

ArrayList<HashMap<String, String>> mylist = new ArrayList<HashMap<String, String>>();            
JSONObject json = JSONfunctions.getJSONfromURL("http://10.0.2.2/php/ViewPro.php"); 

try{
      JSONArray  earthquakes = json.getJSONArray("prop");
      for(int i=0;i<earthquakes.length();i++){                      
            HashMap<String, String> map = new HashMap<String, String>();    
            JSONObject e = earthquakes.getJSONObject(i);
            map.put("id",  String.valueOf(i));
            map.put("imageColumn","Property : " + e.getString("imageColumn"));
            map.put("P_Price","Property Cost : " + e.getString("P_Price"));         
            mylist.add(map);            
      }     
}catch(JSONException e) {
      Log.e("log_tag", "Error parsing data "+e.toString());
}

ListAdapter adapter = new SimpleAdapter(this, mylist , R.layout.list_item, new String[] {"imageColumn","P_Price"}, new int[] { R.id.item_title, 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(ViewStock.this, "ID '" + o.get("id") + "' was clicked.", Toast.LENGTH_SHORT).show(); 
      }
});

私を助けてください :)

4

2 に答える 2

0

これは私が探していたものです:

ImageView imageView = (ImageView) rowView.findViewById(R.id.logo);      
Bitmap bitmap = null;

bitmap = BitmapFactory.decodeStream((InputStream)new URL(i).getContent());
于 2012-07-01T12:14:07.707 に答える
0

私があなたの問題を理解したら、URL から取得した画像のリストとテキストを表示したいと考えています。

コードで画像を描画する方法を指定しないでください。アダプタで getView メソッドをオーバーライドしようとします。これに似た何か

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    View v = convertView;

    ...
    LayoutInflater vi = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

    v = vi.inflate(R.layout.yourlinelayout, null);
    ImageView img = (ImageView) v.findViewById(R.id.my_img);
    UrlImageViewHelper.setUrlDrawable(img, url_image_link, R.drawable.default, 60000);

    return v;
}

UrlImageViewHelper -> クールなライブラリです。コメントの最後にリンクを投稿しました

私が慣れ親しんでいるのは、この問題を 4 つのサブ問題に分割することです。一度実行すれば、アダプタとリストビューで問題が発生することはありません。

アクティビティ

ListActivity を拡張する Activity が必要です

ListView を含むレイアウト xml を定義する必要があります。これにより、リストビュー ID が @android:id/list に設定されます。

各線の描画

各行のレイアウトでxmlレイアウトを定義する必要があります(あなたの場合は画像とテキスト)

各行の情報を保持するクラスを定義しましょう。これは、たとえば InfoRow と呼ばれます (2 つの文字列で、1 つは URL、もう 1 つはテキストです)。

InfoRow の ArrayAdapter (AdapterMyInfo など) を定義する必要があります。これにより、行レイアウト xml が膨張し、各行が描画されます。

両方を組み合わせる

ListActivity の Adapter が ArrayAdapter であることを指定するだけです。

info = new ArrayList<InfoRow >();

m_adapter = new AdapterMyInfo(
                    this.getApplicationContext(),
                    info );

setListAdapter(m_adapter);

Draw an Image from a URL Tha Last Problem... これを試してみてください。素晴らしいです、キャッシュと AsyncLoad です。本当にスムーズでプロフェッショナル

https://github.com/koush/UrlImageViewHelper

于 2012-06-20T12:44:41.503 に答える