В ListActivity отображается только одна строка - PullRequest
0 голосов
/ 25 октября 2011

Я пытаюсь создать ListActivity, строки которого содержат текст и изображение. Но он показывает только значения одной строки, изображения и тексты других строк невидимы. Когда я отлаживаю код, их значения не равны нулю. Но он показывает строки, но не показывает эти значения текста и изображения на макете, кроме первой строки. Вот мой код:

public class SutList extends ListActivity implements XmlListener,OnItemClickListener{
XMLParser xmlParser;
@SuppressWarnings("rawtypes")
ArrayList sutList = new ArrayList();
ProgressDialog sutProgress;
XmlObjectAdapter xmlObj;
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    xmlParser = new XMLParser("http://192.168.2.101/eczaplus/AndroidAPI/search.php?searchtype=drug_sut&keyword="+SharedItems.getInstance().clickedObject.map.get("id"));
    xmlParser.addMyEventListener(this);
    xmlParser.startAsyncTask();

    getListView().setOnItemClickListener(this);
}

@Override
public void xmlParsed(XmlEvent evt) {
    sutList = evt.ownerClient.children;
    xmlObj = new XmlObjectAdapter(this, R.layout.esdegerilac, sutList);
    setListAdapter(xmlObj);
}

@Override
public void preExecute(EventObject evt) {
    sutProgress = new ProgressDialog(SutList.this);
    sutProgress.setProgressStyle(ProgressDialog.STYLE_SPINNER);
    sutProgress = ProgressDialog.show(SutList.this,"", "");

}

@Override
public void postExecute(EventObject evt) {
    sutProgress.dismiss();

}

private class XmlObjectAdapter extends ArrayAdapter<XmlObject> {

    private ArrayList<XmlObject> items;

    public XmlObjectAdapter(Context context, int textViewResourceId, ArrayList<XmlObject> 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.sutlist, null);
            }
            XmlObject o = items.get(position);
         //   System.out.println(o.map.get("name"));
            if (o != null) {
                TextView ilacText = (TextView) findViewById(R.id.sutNameText);
                ImageView sutImage = (ImageView) findViewById(R.id.sutImage);
                //HashMap< String, String> atr = (HashMap<String, String>) o.map;
                if (sutImage != null){
                    if (o.map.get("exists").equals("1"))
                        sutImage.setImageResource(R.drawable.ok);
                    else 
                        sutImage.setImageResource(R.drawable.not_ok);

                if (ilacText != null)
                    ilacText.setText(o.map.get("title"));

                }

            }
            return v;
    }
}

Надеюсь, вы поможете мне решить эту проблему.

1 Ответ

2 голосов
/ 25 октября 2011

В вашем XmlObjectAdapter в getView () я считаю, что вы хотите

 v.findViewById() 

не просто

 findViewById()
...