Android排序数组

Android排序数组,android,arrays,sorting,Android,Arrays,Sorting,我正在尝试按字母顺序(按字串)对数组排序。在我把这行Arrays.sort(word,String.CASE\u-INSENSITIVE\u-ORDER)放进去之后,其他并行字符串数组(如example和flag)不再与单词位置匹配 如果单词字符串在排序后更改其位置,则其他字符串应链接到该字符串并更改其位置 public class MainActivity extends Activity implements SearchView.OnQueryTextListener {

我正在尝试按字母顺序(按字串)对数组排序。在我把这行
Arrays.sort(word,String.CASE\u-INSENSITIVE\u-ORDER)放进去之后,其他并行字符串数组(如example和flag)不再与单词位置匹配

如果
单词字符串
在排序后更改其位置,则其他字符串应链接到该字符串并更改其位置

public class MainActivity extends Activity implements
    SearchView.OnQueryTextListener {

    ListView list;
    SearchView mSearchView;

    ArrayList<Vocabulary> vocabularylist;
    ListViewAdapter adapter;
    String[] definition;
    String[] word;
    String[] example;
    int[] flag;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        getWindow().requestFeature(Window.FEATURE_ACTION_BAR);
        // Get the view from listview_main.xml
        setContentView(R.layout.listview_main);

        // Generate sample data into string arrays
        word = new String[] { "bimbo", 
                  "heartthrob",
                  "good-for-nothing"};

        definition = new String[] { "loira burra", 
                                    "arrasa-corações",
                                    "vagabundo"};

        example = new String[] { "She's a real bimbo.", 
                                 "He's a real heartthrob.",
                                 "What are you doing wasting time here? Get a job, you good-for-nothing!"};

        flag = new int[] { R.drawable.bimbo, 
                           R.drawable.heartthrob, 
                           R.drawable.vagabundo};

        **// THE PROBLEM IS HERE**          
            **Arrays.sort(word, String.CASE_INSENSITIVE_ORDER);**
        list = (ListView) findViewById(R.id.listview);
        mSearchView = (SearchView) findViewById(R.id.search_view);

        vocabularylist = new ArrayList<Vocabulary>();
        for (int i = 0; i < word.length; i++) {
            Vocabulary vocabulary = new Vocabulary(word[i], definition[i], example[i],
                    flag[i]);
            vocabularylist.add(vocabulary);
        }

        // Pass results to ListViewAdapter Class

        adapter = new ListViewAdapter(getApplicationContext(), vocabularylist, word, definition, example, flag);
        // Binds the Adapter to the ListView
        list.setAdapter(adapter);

         list.setTextFilterEnabled(true);
         setupSearchView();
        // Capture ListView item click
        list.setOnItemClickListener(new OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view,
                    int position, long id) {
                Intent i = new Intent(MainActivity.this, SingleItemView.class);
                // Pass all data definition

                Vocabulary voc = (Vocabulary) adapter.getItem(position);

                i.putExtra("definition", voc.getDefinition());
                // Pass word
                i.putExtra("word", voc.getWord());
                // Pass example
                i.putExtra("example", voc.getExample());
                // Pass flag
                i.putExtra("flag", voc.getFlag());
                // Pass position
                i.putExtra("position", position);
                // Open SingleItemView.java Activity
                startActivity(i);

            }
        });
    }

    private void setupSearchView() {
        mSearchView.setIconifiedByDefault(false);
        mSearchView.setOnQueryTextListener(this);
        mSearchView.setSubmitButtonEnabled(false); 
        mSearchView.setQueryHint("Pesquise aqui...");
    }

    public boolean onQueryTextChange(String newText) {
        adapter.getFilter().filter(newText);
        return false;
    }

    public boolean onQueryTextSubmit(String query) {
        return false;
    }
}
public类MainActivity扩展活动实现
SearchView.OnQueryTextListener{
列表视图列表;
搜索视图;
ArrayList语言学家;
ListViewAdapter适配器;
字符串[]定义;
字符串[]字;
字符串[]示例;
int[]标志;
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
getWindow().requestFeature(Window.FEATURE\u ACTION\u栏);
//从listview_main.xml获取视图
setContentView(R.layout.listview_main);
//将示例数据生成到字符串数组中
word=新字符串[]{“bimbo”,
“心上人”,
“一无是处”};
定义=新字符串[]{“loira burra”,
“arrasa corações”,
“vagabundo”};
示例=新字符串[]{“她是一个真正的荡妇。”,
“他真是个令人心动的人。”,
“你在这里浪费时间干什么?找份工作,你一无是处!”;
flag=newint[]{R.drawable.bimbo,
R.drawable.Hearthob,
R.drawable.vagabundo};
**//问题就在这里**
**排序(字、字符串、不区分大小写的顺序)**
list=(ListView)findViewById(R.id.ListView);
mSearchView=(SearchView)findViewById(R.id.search\u视图);
vocabularylist=newArrayList();
for(int i=0;i
不要定义排序后必须按顺序关联的多个数组,而是创建一个包含所有所需属性(定义、单词和示例)的类,用该对象类型定义一个列表,并按所需条件进行排序


在排序结束时,您将与列表中的所有成员一致

您需要定义一个类并实现可比较的接口:

public class Data implements Comparable<Data> {
   String definition;
   String word;
   String example;
   int flag;

  public int compareTo(Data data)
  {
     return this.word.compareTo(data.word);
  }
}
和使用:

Arrays.sort(dataArray);

现在所有索引都链接在一起了

您已经有了一个对象,该对象集中存储了来自名为
词汇表
的数组的所有数据,并且您的适配器正在使用您已经创建的那些对象的列表

您只需对
词汇表进行如下排序:

Collections.sort(vocabularyList, new Comparator<Vocabulary>() {
    @Override
    public int compare(Vocabulary lhs, Vocabulary rhs) {
        return lhs.getWord().compareToIgnoreCase(rhs.getWord());
    }
});

此外,适配器应该只需要
词汇列表
,因为该列表包含来自数组
单词
定义
示例
标志
的信息。如果在
ListViewAdapter
中没有使用它们,您应该将它们从中删除。

我定义了一个类数据并实现了可比较的接口。然后我更新了我的主活动put
Data[]dataArray
数组。排序(dataArray)如上所示。但是出了点问题。我的申请已停止并完成。看看我上面更新的帖子!您没有在dataArray中放入任何数据。是的,我试着把这个
dataArray=newdata[]{“bimbo”,“loira burra”,“她是个真正的bimbo”,R.drawable.bimbo}但msgerror显示一个红色标记:类型不匹配:无法从字符串转换为数据这不是它的工作方式。dataArray=新数据[];数据数组[0]。word=bimbo;dataArray[0]。标志=。。。。
Collections.sort(vocabularyList, new Comparator<Vocabulary>() {
    @Override
    public int compare(Vocabulary lhs, Vocabulary rhs) {
        return lhs.getWord().compareToIgnoreCase(rhs.getWord());
    }
});
adapter = new ListViewAdapter(getApplicationContext(), vocabularylist,
                              word, definition, example, flag);