Как реализовать собственный адаптер с listview? - PullRequest
0 голосов
/ 28 мая 2019

Привет! Я работаю с приложением для Android, когда мне нужно проанализировать массив в представлении списка. Я создал специальный адаптер для этого, но мне здесь чего-то не хватает.

public class IndustryAdapter extends ArrayAdapter<Industry> {
    Context context;
    int resource;
    public IndustryAdapter(Context context, ArrayList<Industry> industries) {
        super(context, industries);
    }

    @Override
    public View getView(View convertView, ViewGroup parent) {
        if (convertView == null) {
            convertView = LayoutInflater.from(getContext()).inflate(android.R.layout.simple_list_item_1, parent, false);
        }
        TextView tvName = (TextView)convertView.findViewById(R.id.tvName);
        TextView tvDescription = (TextView)convertView.findViewById(R.id.tvDescription);

        return convertView;
    }


}

On the super(context, industries) is showing an error for industries:

required: 'int'
error: incompatible types: ArrayList<Industry> cannot be converted to int

Ответы [ 2 ]

1 голос
/ 28 мая 2019

Используйте базовый адаптер для создания настраиваемого адаптера для вашего списка

class CustomAdapter extends BaseAdapter {
   private ArrayList<Industry> industries;
    private Context context;

    public CustomAdapter(ArrayList<Industry> industries, Context context) {
        this.industries = industries;
        this.context = context;
    }

    @Override
    public int getCount() {
        return industries.size();
    }

    @Override
    public Object getItem(int position) {
        return industries.get(position);
    }

    @Override
    public long getItemId(int position) {
        return 0;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        if (convertView == null) {
            convertView = LayoutInflater.from(context).inflate(R.layout.your_layout, parent, false);
        }
        TextView tvName = (TextView)convertView.findViewById(R.id.tvName);
        TextView tvDescription = (TextView)convertView.findViewById(R.id.tvDescription);

        return convertView;
    }
}
0 голосов
/ 28 мая 2019

Вы должны просто изменить свой вызов супер-конструктора.Потому что он получит ресурс макета, который вы будете раздувать.Как это:

public IndustryAdapter(Context context, ArrayList<Industry> industries) {
            super(context, android.R.layout.simple_list_item_1);
        }
...