@shuhermayer

Как прикрутить ArrayList к кастомному ListView?

Есть кастомный ListIvew. Сейчас он заполняется из String[]
Есть парсер XML, он парсит в ArrayList

Как прикрутить в ArrayList к ListView в MYArrayAdapter.class так, чтобы не вызывать каждый раз адаптер при каждой итерации при парсинге?

То есть, чтобы нужные атрибуты присваивались элементам ListView

парсер
ArrayList<String> list = new ArrayList<String>();

        try{
            XmlPullParser parser = getResources().getXml(R.xml.products);

            while(parser.getEventType()!=XmlPullParser.END_DOCUMENT){
                if(parser.getEventType() == XmlPullParser.START_TAG && parser.getName().equals("product")){
                    list.add(parser.getAttributeValue(0) + " (" + parser.getAttributeValue(2) + ")\n" + parser.getAttributeValue(1));
                }
                parser.next();
            }
        }catch(Throwable t){
            Toast.makeText(this, "Error loading XML.", Toast.LENGTH_SHORT).show();
        }

        //ListView listView = (ListView)findViewById(R.id.listView);
        //listView.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, list));


Переопределённый ArrayAdapter:
MYArrayAdapter
package com.ex.listactivity;

...

public class MyArrayAdapter extends ArrayAdapter<String> {
    private final Activity context;
    private final String] names;

    public MyArrayAdapter(Activity context, String] names) {
        super(context, R.layout.rowlayout, names);
        this.context = context;
        this.names = names;
    }


    static class ViewHolder {
        public ImageView imageView;
        public TextView textView;
        public EditText textEdit;
        public Button btn;
    }

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

        final ViewHolder holder;
     
        View rowView = convertView;
        if (rowView == null) {
            LayoutInflater inflater = context.getLayoutInflater();
            rowView = inflater.inflate(R.layout.rowlayout, null, true);
            holder = new ViewHolder();
            holder.textView = (TextView) rowView.findViewById(R.id.label);
            holder.imageView = (ImageView) rowView.findViewById(R.id.icon);
            holder.textEdit = (EditText) rowView.findViewById(R.id.editText);
            holder.btn = (Button) rowView.findViewById(R.id.button);
            rowView.setTag(holder);




        } else {
            holder = (ViewHolder) rowView.getTag();
        }

        holder.textView.setText(names[position]);
        // Изменение иконки для Windows и iPhone
        String s = names[position];

        return rowView;
    }

    private class onClickListener implements View.OnClickListener {
        @Override
        public void onClick(View view) {

        }
    }


}


вызов из MainActivity
String] values = new String] {"айтем 1", "айтем 2", "айтем 3", "айтем 4", "айтем 5"};
        setListAdapter(new MyArrayAdapter(this, values));
  • Вопрос задан
  • 2832 просмотра
Пригласить эксперта
Ответы на вопрос 1
JaLoveAst1k
@JaLoveAst1k
String[] values = list.toArray(new String[list.size()]);
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы