【发布时间】:2016-09-02 03:35:50
【问题描述】:
我设法更改了我的ListView 的项目位置,但在我关闭我的应用程序后,该位置又回到了我进行任何更改之前的位置。
什么以及如何保存项目的排列位置?
填充ListView
String[] SavedFiles;
String dataDr;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_address);
dataDr = getApplicationInfo().dataDir;
showDirFile(dataDr);
}
void showDirFile(String dirpth)
{
String path = dirpth+"/files";
Log.d("Files", "Path: " + path);
File f = new File(path);
File file[] = f.listFiles();
Log.d("Files", "Size: "+ file.length);
SavedFiles = new String[file.length];
for (int i=0; i < file.length; i++)
{
Log.d("Files", "FileName:" + file[i].getName());
SavedFiles[i] = file[i].getName();
}
ArrayAdapter<String> adapter
= new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1,
SavedFiles);
listView.setAdapter(adapter);
}
更改项目位置并将其保存到Array
Collections collections;
void positionChange(){
//to store arrays into ArrayList
List<String> newList = new ArrayList<String>(Arrays.asList(myDataFiles));
//to get the item's position @ get the first item in array if multiple arrays exist
String currentPos = String.valueOf(intArrayList.get(0));
int oldPos = Integer.valueOf(currentPos);
int newPos = oldPos-1;
//Swap position @ move up list
collections.swap(newList, oldPos, newPos);
//store ArrayList data into arrays
myDataFiles = newList.toArray(myDataFiles);
intArrayList.clear();
adapter.notifyDataSetChanged();
}
编辑
请注意Array 中的项目是从dataDr = getApplicationInfo().dataDir; 填写的
也许我需要想办法将排列位置保存在我的目录中?
【问题讨论】:
-
您的物品何时再次改变位置?当您最小化应用程序并再次恢复或完全关闭应用程序时?
-
@AwaisAhmad 当我完全关闭我的应用程序时。现在我注意到,当我打开一个新活动或按下设备的返回按钮时,它也会恢复到原始状态
-
只需将位置保留在共享首选项中并在启动应用程序时设置它
-
@Rithe 好吧,我研究了一些关于 sharedpreference 的知识,它似乎可以完成这项工作。但在我实现这个之前,这将如何检索我的项目的位置,因为我使用
dataDr = getApplicationInfo().dataDir;填充了我的Array。请作为答案发布,因为我不确定如何实现这一点
标签: android arrays listview arraylist save