How to Efficiently Load 1000 Data in Lists

I have 1000 clients to load in a custom listview from the server. But I need more time to fill the list. I am using the search option to find customers, so I need to download and display all customers in one shot. I cannot display it from the local database because I can edit the details of an item by clicking in the list and store it on the server. Can anyone help me upload to a custom list efficiently?

  public class CustomersAdapter extends ArrayAdapter<Item> {

private ArrayList<Item> items;
private LayoutInflater vi;
private Item objItem;

ViewHolderSectionName holderSection;
ViewHolderName holderName;

public CustomersAdapter(Context context, ArrayList<Item> items) {
    super(context, 0, items);

    this.items = items;
    vi = (LayoutInflater) context
            .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}

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

    objItem = items.get(position);

    if (objItem.isSectionItem()) {
        SectionHeadersModel si = (SectionHeadersModel) objItem;

        if (convertView == null
                || !convertView.getTag().equals(holderSection)) {
            convertView = vi.inflate(R.layout.alphabet_separator, null);

            holderSection = new ViewHolderSectionName();
            convertView.setTag(holderSection);
        } else {
            holderSection = (ViewHolderSectionName) convertView.getTag();
        }

        holderSection.section = (TextView) convertView
                .findViewById(R.id.alphabet_letter);
        holderSection.section.setText(si.getSectionString().toString());

    } else {
        CustomerListViewModel ei = (CustomerListViewModel) objItem;

        if (convertView == null || !convertView.getTag().equals(holderName)) {
            convertView = vi.inflate(R.layout.customer_list_item, null);

            holderName = new ViewHolderName();
            convertView.setTag(holderName);
        } else {
            holderName = (ViewHolderName) convertView.getTag();
        }

        holderName.name = (TextView) convertView
                .findViewById(R.id.CustomerName);
        holderName.email = (TextView) convertView
                .findViewById(R.id.CustomerEmail);
        holderName.phone = (TextView) convertView
                .findViewById(R.id.CustomerPhone);

        if (holderName.name != null)
            holderName.name.setText(ei.getCustomerName());
        holderName.email.setText(ei.getCustomerEmail());
        holderName.phone.setText(ei.getCustomerPhone());
    }
    return convertView;
}

public static class ViewHolderName {
    public TextView name;
    public TextView email;
    public TextView phone;
}

public static class ViewHolderSectionName {
    public TextView section;
}

      

}

+3


source to share


2 answers


Try using viewHolder on your list, it stores each of the component views inside the layout tag field so you can access them immediately without revisiting them. This LINK can help you.



0


source


You can use BaseAdapter. see link Link and Link



0


source







All Articles