我的 android 应用程序中有一个列表视图,它对列表视图本身执行两个功能。
拳头,我可以从列表视图中删除一个项目。
其次,我可以重命名列表视图中的某些内容。
任何时候出现上述情况,
如果列表视图上的最后一项被删除,我如何显示不同的 XML 布局?
adapter = new SetRowsCustomAdapter(getActivity(), R.layout.customlist, rowsArray);
dataList = (ListView) mFrame3.findViewById(R.id.lvFiles); //lvfiles from xml layout
dataList.setAdapter(adapter);
dataList.setEmptyView(noFilesDisplayed); //not working
其次,一旦我重命名列表视图中的任何内容,如何更新列表视图以反映更改?
adapter.notifyDataSetChanged(); //not working
我的 ContextMenu 中有两个选择,Delete和Rename。
如果选择删除,则执行以下代码:
if (menuItemIndex == 0) {
if (folder.exists()) {
//File flEachFile = new File(folder.toString() + "/" + currentFileName + ".tp");
flEachFile = new File(folder.toString() + "/" + txt + ".tp");
flEachFile2 = new File(folder.toString() + "/." + txt + ".tp");
if (flEachFile.exists()) {
flEachFile.delete();
}
if (flEachFile2.exists()) {
flEachFile2.delete();
}
adapter.remove(adapter.getItem(info.position)); //updated the list
//adapter.notifyDataSetChanged();
dataList.invalidate();
dataList.setEmptyView(noFilesDisplayed);//should display the noFilesDisplayed layout but it's not.
//getActivity().getActionBar().setSelectedNavigationItem(1);
}
}
这可以正常工作,因为在我删除列表时列表会自行更新。因此,如果我在视图中有两个列表并且我删除了一个列表更新以显示一个:
adapter.remove(adapter.getItem(info.position)); //updated the list
但是,如果我删除列表中的最后一项并且我想显示另一个 xml 布局,如下所示:
dataList.setEmptyView(noFilesDisplayed);//should display the noFilesDisplayed layout but it's not.
它不起作用。
==================================================== ====
如果选择重命名,则执行以下代码:
if (menuItemIndex == 1) {
// custom dialog
final Dialog dialog = new Dialog(getActivity());
dialog.setContentView(R.layout.renamefile);
dialog.setTitle("Rename Existing Trip");
currTrip = (TextView) dialog.findViewById(R.id.tvCurrentFileName);
currTrip.setText(txt);
etRT = (EditText) dialog.findViewById(R.id.etRenameTo);
Button btnCancel = (Button) dialog.findViewById(R.id.btnCancel);
Button btnApply = (Button) dialog.findViewById(R.id.btnApply);
dialog.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);
btnApply.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if(folder.exists()) {
flEachFile = new File(folder.toString() + "/" + currTrip.getText().toString() + ".tp");
flEachFile2 = new File(folder.toString() + "/." + currTrip.getText().toString() + ".tp");
if (flEachFile.exists()) {
if (etRT.getText().toString().matches("")) {
rTo = (TextView) dialog.findViewById(R.id.tvRenameTo);
rTo.setTextColor(Color.parseColor("#A60000"));
}
else {
File toFile = new File(folder.toString() + "/" + etRT.getText().toString() + ".tp");
flEachFile.renameTo(toFile);
if (flEachFile2.exists()) {
File toFile2 = new File(folder.toString() + "/." + etRT.getText().toString() + ".tp");
flEachFile2.renameTo(toFile2);
}
//adapter.notifyDataSetChanged();
dataList.invalidate();
dialog.dismiss();
//getActivity().getActionBar().setSelectedNavigationItem(1);
}
}
else {
Toast.makeText(getActivity(), "File does not exist", Toast.LENGTH_SHORT).show();
}
}
}
});
// if cancel is clicked, close the custom dialog
btnCancel.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dialog.dismiss();
}
});
dialog.show();
}
如果我切换选项卡并返回此选项卡,我只能看到更改。