0

誰かが私が間違っていること/私がしなければならないことを説明できますか?

JSON配列から情報を取得するリストビューがあります。ただし、これはカスタム リストビューで、各行に 5 つの画像といくつかのテキストがあります。各画像には、有効/無効に応じて異なる画像を持つ /drawable/image_selector があります。ハッシュマップと ListAdapter を使用して、各行のテキストを動的に設定できます。しかし、私は画像で同じことをしようとしていますが、それができません。カスタム アダプターの使用は正しい選択ですか? もしそうなら、どのように?私は例からそれらを使用する方法を理解していません。

ありがとう

特定のアクティビティのコードは次のとおりです。 public class DisponiveisActivity extends ListActivity { ; //para os icones はレイアウトを行います

private ProgressDialog pDialog;

//Object of class JSON Parser
JSONParser jsonParser = new JSONParser();
ArrayList<HashMap<String, String>> disponiveislist;


public void onCreate(Bundle savedInstanceState){
    super.onCreate(savedInstanceState);
    setContentView(R.layout.list);


    disponiveislist = new ArrayList<HashMap<String, String>>();
    new Loaddisp().execute();

}
//Background ASYNC task to load

class Loaddisp extends AsyncTask<String, String, String>{
    @Override
    protected void onPreExecute() {
        super.onPreExecute();
        pDialog = new ProgressDialog(DisponiveisActivity.this);
        pDialog.setMessage("Carregando");
        pDialog.setIndeterminate(false);
        pDialog.setCancelable(false);
        pDialog.show();
    }



    protected String doInBackground(String... args) {


                String nome = l.getString("NOME");
                String preco = l.getString("PRECO");
                String cfotografia = l.getString("COMFOTOGRAFIA");
                String cdados = l.getString("COMDADOS");
                String copiniao = l.getString("COMOPINIAO");

                String cdeslocacao = l.getString("COMDESLOCACAO");



                String distancia = l.getString("DISTANCIA");

                //create new HASHMAP                    
                HashMap<String,String> map = new HashMap<String,String>();
                map.put("NOME", nome);  
                map.put("PRECO", preco);
                map.put("DISTANCIA", distancia);
                map.put("COMOPINIAO", copiniao);
                map.put("COMDADOS", cdados);
                map.put("COMFOTOGRAFIA", cfotografia);
                //------------------------------


                disponiveislist.add(map);

            }




    @Override
    protected void onPostExecute(String file_url) {
        // TODO Auto-generated method stub

        pDialog.dismiss();
        runOnUiThread(new Runnable() {
            public void run() {
                /**
                 * Updating parsed JSON data into ListView
                 * */



                    Log.d("PP",disponiveislist.toString());
                ListAdapter adapter = new SimpleAdapter(DisponiveisActivity.this, disponiveislist, R.layout.listrow,new String[]{"NOME","PRECO","DISTANCIA"}, new int[]{R.id.mission_name, R.id.preco, R.id.cdistancia});




                setListAdapter(adapter);


            }
        });
    }



    }

}

4

1 に答える 1

0

Google で見つけた素晴らしい例: この場合、画像は 1 つしかありません。コードを 5 つの画像に複製する方法を理解していただければ幸いです。

public class ItemsList extends ListActivity {

private ItemsAdapter adapter;

@Override
protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.items_list);

        this.adapter = new ItemsAdapter(this, R.layout.items_list_item, ItemManager.getLoadedItems());
        setListAdapter(this.adapter);
}

private class ItemsAdapter extends ArrayAdapter<Item> {

        private Item[] items;

        public ItemsAdapter(Context context, int textViewResourceId, Item[] items) {
                super(context, textViewResourceId, items);
                this.items = items;
        }

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
                View v = convertView;
                if (v == null) {
                        LayoutInflater vi = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
                v = vi.inflate(R.layout.items_list_item, null);
                }

                Item it = items[position];
                if (it != null) {
                        ImageView iv = (ImageView) v.findViewById(R.id.list_item_image);
                        if (iv != null) {
                                iv.setImageDrawable(it.getImage());
                        }
                }

                return v;
        }
}

@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
        this.adapter.getItem(position).click(this.getApplicationContext());
}
}
于 2012-06-12T21:32:03.510 に答える