我正试图通过按下一个按钮来移动项目在ListView
上的位置,该按钮将向上移动一行列表。我尝试在SO上寻找其他答案,但他们的ListView
填充了来自ArrayList
fileList()
我是否需要以某种方式对fileList()
中的文件进行排序?或者使用ArrayList
足以让我改变立场?
我使用ArrayList
来获取商品的位置
我如何填充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);
}
我如何得到物品的位置
OnItemClickListener getFileEditContent = new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
// Get item's file name according to position
String clickedFile = (String)parent.getItemAtPosition(position);
stringArrayList.add(clickedFile)
// Get item position
intArrayList.add(position);
}
};
答案 0 :(得分:0)
您已使用String[] SavedFiles;
使用适配器显示列表。
单击要将其移动的项目,以便交换数组项目并通知适配器的写入逻辑。
您的逻辑将使顶部项目为当前项目,当前项目为前一项。
希望这会对你有所帮助。
答案 1 :(得分:0)
我设法使用Collections.swap
方法
实施例
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();
}
这将使我们选择的项目向上移动,但它将无法保存状态。这意味着ListView
上显示的项目位置将恢复到关闭应用程序时的状态