首页 > 解决方案 > 如何将列表中的项目复制到另一个活动的列表中?

问题描述

一直在尝试将收藏夹系统添加到此笔记应用程序中,我可以在其中点击并按住列表视图中的项目,以将其添加到具有列表视图的另一个活动中。这是第一个列表的活动。

通过 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);

    }

}

我应该如何处理这个?

标签: javaandroid

解决方案


随着您在每个笔记的默认目录中创建一个单独的 .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”之类的名称。此外,您应该使用房间数据库来跟踪您的笔记。您的房间数据库中应该有一个收藏夹表来跟踪您的所有收藏夹。


推荐阅读