2016-03-25 2 views
-1

У меня есть listview, и я хочу отсортировать его по названию по возрастанию. Как я могу сделать это программно?Сортировать список по названию по возрастанию

Вот мой код

public class InformationActivity extends AppCompatActivity { 
    private ArrayList<Actors> actorsList; 
    private ActorAdapter adapter; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_information); 

    final ListView listview = (ListView)findViewById(R.id.list); 
    adapter = new ActorAdapter(getApplicationContext(), R.layout.row, actorsList); 
    listview.setAdapter(adapter); 
    } 
} 

Вот ActorAdapter

public class ActorAdapter extends ArrayAdapter<Actors> { 
    private ArrayList<Actors> actorList; 
    private LayoutInflater vi; 
    private int Resource; 
    private ViewHolder holder; 

    public ActorAdapter(Context context, int resource, ArrayList<Actors> objects) { 
    super(context, resource, objects); 
    vi = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    Resource = resource; 
    actorList = objects; 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
    View v = convertView; 
    if (v == null) { 
     holder = new ViewHolder(); 
     v = vi.inflate(Resource, null); 
     holder.imageview = (ImageView) v.findViewById(R.id.imgIcon); 
     holder.tvName = (TextView) v.findViewById(R.id.nama); 
     v.setTag(holder); 
    } else { 
     holder = (ViewHolder) v.getTag(); 
    } 
    holder.tvName.setText(actorList.get(position).getName()); 
    Picasso.with(this.getContext()).load(actorList.get(position).getImage()).placeholder(R.layout.progress).resize(110,110).error(R.mipmap.error).into(holder.imageview); 
    return v; 
    } 

    static class ViewHolder { 
    public ImageView imageview; 
    public TextView tvName; 
    } 
} 

Я новичок в Android и любая помощь будет принята с благодарностью.

Заранее спасибо.

ответ

0

Вы можете сделать некоторые, как это:

final ListView listview = (ListView)findViewById(R.id.list); 

    Collections.sort(actorsList, new Comparator<Actors>() { 

      /* This comparator will sort objects alphabetically. */ 

      @Override 
      public int compare(Actors a1, Actors a2) { 

       // String implements Comparable 
       return (a1.name.toString()).compareTo(a2.name.toString()); 
      } 
     }); 

    adapter = new ActorAdapter(getApplicationContext(), R.layout.row, actorsList); 
    listview.setAdapter(adapter); 

Вы должны отсортировать список перед setAdapter методом.

+0

Не работает для меня :( –

+0

Можете ли вы обновить свой ответ до показать, как вы это делаете? –

+0

Я добавил ваш код перед 'listview.setAdapter (адаптер);' –

1

Использовать этот

Collections.sort(actorsList, new Comparator<Actors>() { 
@Override 
public int compare(Actors lhs, Actors rhs) { 
    return lhs.getName().compareTo(rhs.getName()); 
}}); 
+0

Не работает для меня :( –

+0

От Где у называют этот код ... ?? –

+0

Я добавил свой код до 'listview.setAdapter (адаптер),' –

Смежные вопросы