Fyruz
Fyruz

Reputation: 97

Implements ViewHolder on a ListView AndroidStudio

I need help to implements a ViewHolder to my ListView please.

...     
ListAdapter adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, array_spinner);//Inserisco le possibilita
                mylist = (ListView) findViewById(R.id.listView1);
                mylist.setAdapter(adapter);
                mylist.setOnItemClickListener(new AdapterView.OnItemClickListener() {
...

Can someone please help me ?

Upvotes: 0

Views: 888

Answers (1)

Hardy&#39;k
Hardy&#39;k

Reputation: 309

    public class YourAdapter extends ArrayAdapter<String> {

    Context context;
    int layoutResourceId;
    String data[] = null;

    public YourAdapter(Context context, int layoutResourceId, String[] data) {
        super(context, layoutResourceId, data);
        this.layoutResourceId = layoutResourceId;
        this.context = context;
        this.data = data;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        View row = convertView;
        ViewHolder holder = null;

        if(row == null)
        {
            LayoutInflater inflater = ((Activity)context).getLayoutInflater();
            row = inflater.inflate(layoutResourceId, parent, false);

            holder = new ViewHolder();
            holder.txtTitle = (TextView)row.findViewById(R.id.row_textview);

            row.setTag(holder);
        }
        else
        {
            holder = (ViewHolder)row.getTag();
        }

        String title = data[position];
        holder.txtTitle.setText(title);

        return row;
    }

    static class ViewHolder
    {
        TextView txtTitle;
    }
}

and In your activity do this:

   YourAdapter adapter = new YourAdapter<>(this,R.layout.your_custom_layout, your_string_array);
    mylist = (ListView) findViewById(R.id.listView1);
    mylist.setAdapter(adapter);

Upvotes: 1

Related Questions