java - 如何将列表中的项目复制到另一个活动的列表中?
问题描述
一直在尝试将收藏夹系统添加到此笔记应用程序中,我可以在其中点击并按住列表视图中的项目,以将其添加到具有列表视图的另一个活动中。这是第一个列表的活动。
通过 MainActivity 添加项目
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button button = (Button) findViewById(R.id.savebutton);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
EditText editTextHeading = (EditText) findViewById(R.id.editTextTextPersonName);
EditText editTextContent = (EditText) findViewById(R.id.contentfield);
String heading = editTextHeading.getText().toString().trim();
String content = editTextContent.getText().toString().trim();
if (!heading.isEmpty()) {
if(!content.isEmpty()) {
try {
FileOutputStream fileOutputStream = openFileOutput(heading + ".txt", Context.MODE_PRIVATE); //heading will be the filename
fileOutputStream.write(content.getBytes());
fileOutputStream.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}else {
editTextContent.setError("Content can't be empty!");
}
}else{
editTextHeading.setError("Heading can't be empty!");
}
editTextContent.setText("");
editTextHeading.setText("");
}
});
Button button2 = (Button) findViewById(R.id.btn_gotosaved);
button2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
startActivity(new Intent(MainActivity.this, saved.class));
}
});
Button button3 = (Button) findViewById(R.id.btn_faves);
button3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
startActivity(new Intent(MainActivity.this, favorites.class));
}
});
}
}
添加的项目将在此处查看
public class saved extends MainActivity {
public static final String EXTRA_MESSAGE = "com.example.notes.MESSAGE";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_saved);
File files = getFilesDir();
String[] array = files.list();
ArrayList<String> arrayList = new ArrayList<>();
final ArrayAdapter adapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1, arrayList);
for (String filename : array) {
filename = filename.replace(".txt", "");
System.out.println(filename);
adapter.add(filename);
}
final ListView listView = (ListView) findViewById(R.id.lv_saved);
listView.setAdapter(adapter);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
String item = listView.getItemAtPosition(position).toString();
Intent intent = new Intent(getApplicationContext(), Note.class);
intent.putExtra(EXTRA_MESSAGE, item);
startActivity(intent);
}
});
listView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> adapterView, View view, int position, long id) {
String item = listView.getItemAtPosition(position).toString();
}
});
}
}
从那里点击并按住一个项目应该“收藏”它并使用另一个列表视图将其复制到这个新活动
public class favorites extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_favorites);
ListView listView = (ListView) findViewById(R.id.lv_favorites);
}
}
我应该如何处理这个?
解决方案
随着您在每个笔记的默认目录中创建一个单独的 .txt 文件的实现,您可以这样实现:
listView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> adapterView, View view, int position, long id) {
String item = listView.getItemAtPosition(position).toString();
Boolean isItemFavorite = item.contains("_favorite");
if (!isItemFavorite){
File itemFile = new File(item + ".txt");
File favoriteItemFile = new File(item + "_favorite.txt");
itemFile.renameTo(favoriteItemFile);
}
}
});
然后在您的“收藏夹”活动中,您可以像在“已保存”活动中一样访问所有便笺 .txt 文件 - 只需过滤掉“String[] 数组中不包含“_favorite”的任何项目 =文件.list();"
此外,还有一些提示:遵循活动的命名约定。“已保存”至少应该以大写字母开头,并且实际上应该命名为“SavedNotesListActivity”之类的名称。此外,您应该使用房间数据库来跟踪您的笔记。您的房间数据库中应该有一个收藏夹表来跟踪您的所有收藏夹。
推荐阅读
- python - 无法使用 Python SQlite3 启用扩展
- python - 正则表达式:定义一个特定的组并避免每次都重复
- python - 在北极立体投影上用cartopy绘制等纬度线
- python - 返回所有出现多次且具有不同值的键?
- sql - 我可以在 Firebird POSITION 函数中使用通配符吗
- python - 安装 anaconda 是否与已安装的 Python3 和 R 冲突?
- python - “ NotImplementedError: sched 尚未在 Skulpt 第 4 行实现” Python 2.7
- discord.js - 如何检查机器人是否具有管理 webhook 的权限?
- python-3.x - Discord.py 区分两个不同的服务器
- javascript - 用同一实例续集多对多关系