我使用FileOutputStream
将一些文字保存到文件中,然后将其显示在ListView
上。
我正在尝试通过首先编辑内容,选中项目的复选框,然后点击按钮以编辑或删除数据。
我做了很多研究,但仍然无法理解如何实现这个
这是我的代码
显示数据并在ListView
void ShowSavedFiles() {
//SavedFiles = getApplicationContext().fileList();
SavedFiles = getApplication().fileList();
ArrayAdapter<String> adapter
= new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1,
SavedFiles);
listView.setAdapter(adapter);
if (adapter.isEmpty()) {
Toast.makeText(getBaseContext(), "There is no Address !", Toast.LENGTH_LONG).show();
}
}
要通过选中CheckBox
来修改数据,然后按编辑按钮
void editData(){
imgEditData.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (choiceMode == false) {
choiceMode = true;
clickAble = false;
multiSelectBar.setVisibility(View.VISIBLE);
Toast.makeText(addressActivity.this, "Edit ON", Toast.LENGTH_SHORT).show();
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
// change the checkbox state
CheckedTextView checkedTextView = ((CheckedTextView) view);
checkedTextView.setChecked(!checkedTextView.isChecked());
}
});
ArrayAdapter<String> adapter
= new ArrayAdapter<String>(addressActivity.this,
android.R.layout.simple_list_item_multiple_choice,
SavedFiles);
listView.setAdapter(adapter);
}}
});
}
为了更好地理解它的图片
忽略其他按钮
答案 0 :(得分:1)
制作public class utils
并在其中创建public static ArrayList<Integer> positions
。在adapter
listview
setOnClickListener
CheckBox
public static array
{}添加public class Utils {
public static ArrayList<Integer> positions =new ArrayList<>();
}
,点击并检查后,将该位置添加到getView()
。
CheckBox cBox= (CheckBox) view.findViewById(R.id.myCheckBox); // view is you view inflated
final int myPos= position; //position of cuurent item will be passed into getwiew function
cBox.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
CheckBox temp=(CheckBox)v;
if(temp.isChecked()){
Utils.positions.add(myPos);
}
else{
Utils.positions.remove(myPos);
}
}
});
在Utils.postions
充气布局后适配器的功能添加此
public static Arraylist
通过这种方式,您可以获得list view
中的所有索引列表,当您按下按钮(例如编辑删除等)时会检查这些索引。单击这些按钮,您可以对传递给主数组的这些索引执行所需的任务适配器
请确保在每次填充Utils.positions.clear()
时清除/**
* @InheritanceType("JOINED")
* @DiscriminatorColumn(name="type", type="string")
* @DiscriminatorMap({"element"="AbstractElement", "question"="Question", "text"="TextItem", "media"="MediaItem"})
*/
class AbstractElement extends AbstractEntity implements GridElementInterface
{
//...
}
您可以通过调用
/**
* @MappedSuperclass
*/
class AbstractEntity
{
//...
}
每次通知适配器之前。
答案 1 :(得分:0)
您只需使用ArrayAdapter的remove()方法从列表中删除所需的项目。
可能的方法是:
Object toRemove = arrayAdapter.getItem([POSITION]);
arrayAdapter.remove(toRemove);
另一种方法是修改ArrayList并在ArrayAdapter上调用notifyDataSetChanged()。
arrayList.remove([INDEX]);
arrayAdapter.notifyDataSetChanged();