Android 按ListView字母顺序对数据排序
我需要有关如何按字母顺序在ListView中列出数据的帮助。如果我向foldeData添加更多数据,那么如果我不必手动移动现有数据以按字母顺序列出它们,那就太好了 我已从MainActivity复制了部分代码:Android 按ListView字母顺序对数据排序,android,listview,alphabetical-sort,Android,Listview,Alphabetical Sort,我需要有关如何按字母顺序在ListView中列出数据的帮助。如果我向foldeData添加更多数据,那么如果我不必手动移动现有数据以按字母顺序列出它们,那就太好了 我已从MainActivity复制了部分代码: import java.util.concurrent.TimeUnit; import android.support.v7.app.ActionBarActivity; import com.google.android.gms.ads.*; import android.annot
import java.util.concurrent.TimeUnit;
import android.support.v7.app.ActionBarActivity;
import com.google.android.gms.ads.*;
import android.annotation.SuppressLint;
import android.annotation.TargetApi;
import android.os.Build;
import android.os.Bundle;
import android.os.CountDownTimer;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.widget.AdapterView;
import android.widget.Button;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.Toast;
public class MainActivity extends ActionBarActivity implements OnClickListener {
TextView minPastaTimer, maxPastaTimer, tv_start, tv_stop, choice;
int minTid, maxTid;
private ListView listViewArticles;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_main);
Folder[] folderData = new Folder[4];
folderData[0] = new Folder(R.drawable.icon_music_folder, "Acomo Pepe", (getString(R.string.acomo_pepe)), "Kogetid 9-10min");
folderData[1] = new Folder(R.drawable.icon_music_folder, "Bucatini", (getString(R.string.Bucatini)),"Kogetid 9-10min");
folderData[2] = new Folder(R.drawable.icon_music_folder, "Bumbola", (getString(R.string.Bumbola)),"Kogetid 9-10min");
folderData[3] = new Folder(R.drawable.icon_music_folder, "Cannelloni", (getString(R.string.Cannelloni)),"Kogetid 9-10min");
FolderAdapter adapter = new FolderAdapter(this,
R.layout.listview_item_row, folderData);
listViewArticles = (ListView) findViewById(R.id.listView1);
listViewArticles.setAdapter(adapter);
minPastaTimer = (TextView) findViewById(R.id.minPastaTimer);
minPastaTimer.setText("00:00:00");
maxPastaTimer = (TextView) findViewById(R.id.maxPastaTimer);
choice = (TextView) findViewById(R.id.tv_choice);
maxPastaTimer.setText("00:00:00");
Button btn_italy = (Button) findViewById(R.id.btn_italy);
Button btn_danish = (Button) findViewById(R.id.btn_danish);
tv_start = (TextView) findViewById(R.id.tv_start);
tv_start.setOnClickListener(this);
tv_stop = (TextView) findViewById(R.id.tv_stop);
tv_stop.setOnClickListener(this);
listViewArticles.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
String listItemText = ((TextView) view
.findViewById(R.id.textViewFolderName))
.getText()
.toString();
Toast.makeText(MainActivity.this,
"You clicked: " + listItemText, Toast.LENGTH_LONG)
.show();
if (listItemText.equals("Acomo Pepe")){
minTid=10000;
maxTid=20000;
choice.setText("Acomo Pepe: " + (getString(R.string.acomo_pepe)));
minPastaTimer.setText("00:08:00");
maxPastaTimer.setText("00:09:00");
}
else if (listItemText.equals("Bucatini")){
minTid=540000;
maxTid=600000;
choice.setText("Bucatini - Kogetid: " + (minTid/60/1000) + ("-") +(maxTid/60/1000) + ("min"));
minPastaTimer.setText("00:09:00");
maxPastaTimer.setText("00:10:00");
}
else if (listItemText.equals("Bumbola")){
minTid=15000;
maxTid=30000;
minPastaTimer.setText("00:10:00");
maxPastaTimer.setText("00:11:00");
}
else if (listItemText.equals("Cannelloni")){
minTid=15000;
maxTid=30000;
minPastaTimer.setText("00:11:00");
maxPastaTimer.setText("00:12:00");
}
}
});
import java.util.concurrent.TimeUnit;
导入android.support.v7.app.ActionBarActivity;
导入com.google.android.gms.ads.*;
导入android.annotation.SuppressLint;
导入android.annotation.TargetApi;
导入android.os.Build;
导入android.os.Bundle;
导入android.os.CountDownTimer;
导入android.view.view;
导入android.view.view.OnClickListener;
导入android.view.Window;
导入android.widget.AdapterView;
导入android.widget.Button;
导入android.widget.ListView;
导入android.widget.TextView;
导入android.widget.AdapterView.OnItemClickListener;
导入android.widget.Toast;
公共类MainActivity扩展ActionBarActivity实现OnClickListener{
TextView minPastaTimer、maxPastaTimer、电视启动、电视停止、选项;
int minTid,maxTid;
私有ListView listViewArticles;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
requestWindowFeature(窗口。功能\u无\u标题);
setContentView(R.layout.activity_main);
文件夹[]folderData=新文件夹[4];
folderData[0]=新文件夹(R.drawable.icon_music_文件夹,“Acomo Pepe”,(getString(R.string.Acomo_Pepe)),“Kogetid 9-10min”);
folderData[1]=新文件夹(R.drawable.icon_music_文件夹,“Bucastini”,(getString(R.string.Bucastini)),“Kogetid 9-10min”);
folderData[2]=新文件夹(R.drawable.icon_music_文件夹,“Bumbola”,(getString(R.string.Bumbola)),“Kogetid 9-10min”);
folderData[3]=新文件夹(R.drawable.icon_music_文件夹,“Cannelloni”,(getString(R.string.Cannelloni)),“Kogetid 9-10min”);
折叠式适配器=新折叠式适配器(此,
R.layout.listview_item_row,folderData);
listViewArticles=(ListView)findViewById(R.id.listView1);
setAdapter(适配器);
minPastaTimer=(TextView)findViewById(R.id.minPastaTimer);
minPastaTimer.setText(“00:00:00”);
maxPastaTimer=(TextView)findViewById(R.id.maxPastaTimer);
choice=(TextView)findViewById(R.id.tv\u choice);
maxPastaTimer.setText(“00:00:00”);
按钮btn_意大利=(按钮)findViewById(R.id.btn_意大利);
按钮btn_丹麦语=(按钮)findViewById(R.id.btn_丹麦语);
tv_start=(TextView)findViewById(R.id.tv_start);
tv_start.setOnClickListener(此);
tv_-stop=(TextView)findviewbyd(R.id.tv_-stop);
tv_stop.setOnClickListener(此);
setOnItemClickListener(新的OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父级、视图、,
内部位置,长id){
字符串listItemText=((TextView)视图
.findViewById(R.id.textViewFolderName))
.getText()
.toString();
Toast.makeText(MainActivity.this,
您单击:“+listItemText,Toast.LENGTH\u LONG)
.show();
if(listItemText.equals(“Acomo Pepe”)){
minTid=10000;
maxTid=20000;
setText(“Acomo Pepe:+(getString(R.string.Acomo_Pepe));
minPastaTimer.setText(“00:08:00”);
maxPastaTimer.setText(“00:09:00”);
}
else if(listItemText.equals(“Bucastini”)){
minTid=540000;
maxTid=600000;
setText(“Bucatini-Kogetid:+(minTid/60/1000)+(“-”+(maxTid/60/1000)+(“min”);
minPastaTimer.setText(“00:09:00”);
maxPastaTimer.setText(“00:10:00”);
}
else if(listItemText.equals(“Bumbola”)){
minTid=15000;
maxTid=30000;
minPastaTimer.setText(“00:10:00”);
maxPastaTimer.setText(“00:11:00”);
}
else if(listItemText.equals(“Cannelloni”)){
minTid=15000;
maxTid=30000;
minPastaTimer.setText(“00:11:00”);
maxPastaTimer.setText(“00:12:00”);
}
}
});
折叠适配器:
import android.app.Activity;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.TextView;
public class FolderAdapter extends ArrayAdapter<Folder> {
Context mContext;
int layoutResourceId;
Folder data[] = null;
// @mContext - app context
// @layoutResourceId - the listview_item_row.xml
// @data - the ListItem data
public FolderAdapter(Context mContext, int layoutResourceId, Folder[] data) {
super(mContext, layoutResourceId, data);
this.layoutResourceId = layoutResourceId;
this.mContext = mContext;
this.data = data;
}
// @We'll overried the getView method which is called for every ListItem we have.
// @There are lots of different caching techniques for Android ListView to
// achieve better performace especially if you are going to have a very long ListView.
// @convertView - the cache of list item row layout, if it is null, inflate new
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if(convertView==null){
// inflate the listview_item_row.xml parent
LayoutInflater inflater = ((Activity) mContext).getLayoutInflater();
convertView = inflater.inflate(layoutResourceId, parent, false);
}
// get the elements in the layout
ImageView imageViewFolderIcon = (ImageView) convertView.findViewById(R.id.imageViewFolderIcon);
TextView textViewFolderName = (TextView) convertView.findViewById(R.id.textViewFolderName);
TextView textViewFolderDescription = (TextView) convertView.findViewById(R.id.textViewFolderDescription);
TextView textViewFolderBoilTime = (TextView) convertView.findViewById(R.id.textViewFolderBoilTime);
// Set the data for the list item. You can also set tags here if you want.
Folder folder = data[position];
imageViewFolderIcon.setImageResource(folder.folderIcon);
textViewFolderName.setText(folder.folderName);
textViewFolderDescription.setText(folder.folderDescription);
textViewFolderBoilTime.setText(folder.folderBoilTime);
return convertView;
}
}
导入android.app.Activity;
导入android.content.Context;
导入android.view.LayoutInflater;
导入android.view.view;
导入android.view.ViewGroup;
导入android.widget.ArrayAdapter;
导入android.widget.ImageView;
导入android.widget.TextView;
公共类FolderAdapter扩展了ArrayAdapter{
语境;
国际布局资源;
文件夹数据[]=null;
//@mContext-应用程序上下文
//@layoutResourceId-listview_item_row.xml
//@data-列表项数据
公共文件夹适配器(上下文mContext、内部布局资源ID、文件夹[]数据){
super(mContext、layoutResourceId、data);
this.layoutResourceId=layoutResourceId;
this.mContext=mContext;
这个数据=数据;
}
//@我们将高估getView方法,该方法为我们拥有的每个ListItem调用。
//@Android ListView可以使用多种不同的缓存技术
//实现更好的性能,尤其是当您要拥有很长的ListView时。
//@convertView-列表项行布局的缓存,如果为空,则充气新建
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
if(convertView==null){
//膨胀listview\u项\u row.xml父项
LayoutFlater充气器=((活动)mContext.getLayoutFlater();
convertView=充气机。充气(layoutResourceId,父项,false);
}
//获取布局中的元素
ImageView imageViewFolderIcon=(ImageView)convertView.findViewById(R.id.imageViewFolderIcon);
TextView textViewFolderName=(TextView)convertView.find
Collections.sort(<your_list>);