2

我有 2 个 String[] 数组:
String[] mFileList;
字符串[] mFileList_description;
这是我的函数,它显示带有文件描述列表的警报对话框:

private void Load_file_list(){
Dialog dialog = null;
AlertDialog.Builder alertdg = new AlertDialog.Builder(this); 
alertdg.setTitle("FILES");
alertdg.setTitle("Select file");

final ArrayAdapter<String> adapter;
final EditText filtr = new EditText(this); 
final ListView lista = new ListView(this); 

 adapter = new ArrayAdapter<String>(this, R.layout.list_item, R.id.product_name, mFileList_description);
 lista.setAdapter(adapter);
/////////
 filtr.addTextChangedListener(new TextWatcher() {
    @Override
    public void afterTextChanged(Editable arg0) {
    }
    @Override
    public void beforeTextChanged(CharSequence s, int start, int count,
            int after) {
    }
    @Override
    public void onTextChanged(CharSequence cs, int start, int before,
            int count) {
        // sort
        adapter.getFilter().filter(cs);
        adapter.notifyDataSetChanged();
    } 
 });
 lista.setOnItemClickListener(new OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
        Log.d("TEST","File id:"+arg2+" File name:"+mFileList[arg2]);
    }
   });
 /////////

LinearLayout layout = new LinearLayout(this);
layout.setOrientation(LinearLayout.VERTICAL);
layout.addView(filtr); 
layout.addView(lista); 
alertdg.setView(layout); 
alertdg.show(); 
}

我有问题,当我对描述列表进行排序时,因为 setOnItemClickListener 方法返回用户单击的描述的 id,但它不是数组 mFileList 中的 id(有时这个 id 来自另一个文件)

如何使用 desctiption 对我的文件进行排序?我厌倦了以二维数组完成此操作,但我认为另一种方式会更好......

谢谢,对不起我的英语......;)

4

1 回答 1

0

首先,对于大多数人来说,您在这里遵循了一个不好的模式

优化解决方案:

我建议您保留 1 个ArrayArrayList用户定义的对象类型,而不是保留 2 个数组。

例如:

/**
Here `MyFileClass` is a clsss with attributes whatever you want to store for 
Files and also contains getter/setter methods **/

MyFileClass[] objFiles = new MyFileClass[4];
or
ArrayList<MyFileClass> listFileObjs = new ArrayList<MyFileClass>();

但我再次建议您使用,ArrayList因为与 Array.

现在,当您拥有单身ArrayList<MyFileClass>时,您可以通过执行任何您想要的操作来轻松管理它。

于 2013-04-10T03:18:47.500 回答