[英]how to sort listview item Population wise in android
这是我的活动课
public class MainActivity extends Activity {
// Declare Variables
ListView list;
ListViewAdapter adapter;
EditText editsearch;
String[] rank;
String[] country;
String[] population;
ArrayList<WorldPopulation> arraylist = new ArrayList<WorldPopulation>();
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.listview_main);
// Generate sample data
rank = new String[] { "1", "2", "3", "4", "5", "6", "7", "8", "9", "10" };
country = new String[] { "China", "India", "United States",
"Indonesia", "Brazil", "Pakistan", "Nigeria", "Bangladesh",
"Russia", "Japan" };
population = new String[] { "1,354,040,000", "1,210,193,422",
"315,761,000", "237,641,326", "193,946,886", "182,912,000",
"170,901,000", "152,518,015", "143,369,806", "127,360,000" };
// Locate the ListView in listview_main.xml
list = (ListView) findViewById(R.id.listview);
for (int i = 0; i < rank.length; i++)
{
WorldPopulation wp = new WorldPopulation(rank[i], country[i],
population[i]);
// Binds all strings into an array
arraylist.add(wp);
}
// Pass results to ListViewAdapter Class
adapter = new ListViewAdapter(this, arraylist);
// Binds the Adapter to the ListView
list.setAdapter(adapter);
}
}
这是我的数据模型类:
public class WorldPopulation {
private String rank;
private String country;
private String population;
public WorldPopulation(String rank, String country, String population) {
this.rank = rank;
this.country = country;
this.population = population;
}
public String getRank() {
return this.rank;
}
public String getCountry() {
return this.country;
}
public String getPopulation() {
return this.population;
}
}
我正在按等级,国家和人口在Listview中打印数据,但是我无法按人口明智排序。目前,我必须按行显示明智的排名,而我必须按升序打印数据明智地按人口排序,这意味着小人口首先出现,然后是大人口,请分别救命。
或者创建一个可以比较您的对象的比较器,或者如果它们都是同一类的所有实例,则可以使该类实现Comparable。 然后,您可以使用Collections.sort()进行实际排序。
请检查以下代码,这些不是您需要的内容,但您可以参考。 为什么不将数据保留在arraylist中而不是array中。
ArrayList arrayList = new ArrayList();
//Add elements to Arraylist
arrayList.add("1");
arrayList.add("3");
arrayList.add("5");
arrayList.add("2");
arrayList.add("4");
Collections.sort(arrayList);
//display elements of ArrayList
System.out.println("ArrayList elements after sorting in ascending order : ");
for(int i=0; i<arrayList.size(); i++)
System.out.println(arrayList.get(i));
Collection.sort方法将按升序排序或创建custorm运算符类
import java.util.Comparator;
class IgnoreCaseComparator implements Comparator<String> {
public int compare(String strA, String strB) {
return strA.compareToIgnoreCase(strB);
}
}
然后按您的排序:
IgnoreCaseComparator icc = new IgnoreCaseComparator();
java.util.Collections.sort(arrayList,icc);
这是因为您已将填充声明为字符串。 尝试使用长数据类型。
按照此代码对任何ArrayList进行排序
Collections.sort(empList, new Comparator<WorldPopulation>(){
public int compare(WorldPopulation wp1, WorldPopulation wp2) {
return emp1.getFirstName().compareToIgnoreCase(emp2.getFirstName());
}
});
而不是通知适配器数据集已更改notifyDataSetChanged()
这是比较器的简单示例。 您将在设置适配器之前和调用适配器构造函数之后在主类中调用它。 在您的情况下,由于population是一个字符串,因此在比较器中,您必须将其转换为int以应用排序。 您必须为逗号付出一些。 根据您的要求修改打击代码。
adapter.sort(new Comparator< WorldPopulation >() {
@Override
public int compare(WorldPopulation lhs, WorldPopulation rhs) {
return Integer.parseInt(lhr.getgetPopulation())-Integer.parseInt(rhs.getPopulation()); //or whatever your sorting algorithm
}
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.