Android 按名称升序排列listview
我有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) {
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工作正常,并向我显示数据,但排序功能不起作用。让我们来看看。