Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 按名称升序排列listview_Android_Sorting_Listview - Fatal编程技术网

Android 按名称升序排列listview

Android 按名称升序排列listview,android,sorting,listview,Android,Sorting,Listview,我有listview,我想按名称升序排序。我如何以编程方式完成它 这是我的密码 public class InformationActivity extends AppCompatActivity { private ArrayList<Actors> actorsList; private ActorAdapter adapter; @Override protected void onCreate(Bundle savedInstanceState) {

我有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);
  }
}
public class InformationActivity扩展了AppCompative活动{
私有ArrayList ActorList;
专用雷达适配器;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_信息);
最终ListView ListView=(ListView)findViewById(R.id.list);
适配器=新的Actorapter(getApplicationContext(),R.layout.row,ActorList);
setAdapter(适配器);
}
}
这是Actorapter

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;
  }
}
公共类Actorapter扩展了ArrayAdapter{
私人ArrayList actorList;
私人停车场6号;
私有int资源;
私人持票人;
公共Actorapter(上下文、int资源、ArrayList对象){
超级(上下文、资源、对象);
vi=(LayoutInflater)context.getSystemService(context.LAYOUT\u充气机\u服务);
资源=资源;
actorList=对象;
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
视图v=转换视图;
如果(v==null){
holder=新的ViewHolder();
v=vi.充气(资源,空);
holder.imageview=(imageview)v.findViewById(R.id.imgIcon);
holder.tvName=(TextView)v.findViewById(R.id.nama);
v、 setTag(支架);
}否则{
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(110110).error(R.mipmap.error).into(holder.imageview);
返回v;
}
静态类视窗夹{
公共影像视图;
公共文本视图tvName;
}
}
我是android的初学者,任何帮助都将不胜感激

提前谢谢。

用这个

Collections.sort(actorsList, new Comparator<Actors>() {
@Override
public int compare(Actors lhs, Actors rhs) {
    return lhs.getName().compareTo(rhs.getName());
}});
Collections.sort(actorsList,newcomparator(){
@凌驾
公共整数比较(演员左、演员右){
返回lhs.getName().compareTo(rhs.getName());
}});

您可以这样做:

 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);
final ListView ListView=(ListView)findviewbyd(R.id.list);
Collections.sort(actorsList,newcomparator(){
/*此比较器将按字母顺序对对象进行排序*/
@凌驾
公共整数比较(参与者a1、参与者a2){
//字符串实现可比较的
return(a1.name.toString()).compareTo(a2.name.toString());
}
});
适配器=新的Actorapter(getApplicationContext(),R.layout.row,ActorList);
setAdapter(适配器);

您必须在
setAdapter
方法之前对列表进行排序。

我在
listview.setAdapter(adapter)之前添加了您的代码这不是放置此代码的正确位置。请将此代码放在
adapter=new actorapter(getApplicationContext(),R.layout.row,actorsList)之前此行。我在
listview.setAdapter(adapter)之前添加了您的代码到底发生了什么?listview工作正常,并向我显示数据,但排序功能不起作用。让我们来看看。