2

我正在为 Android 平台开发一个闪存卡应用程序。到目前为止,我有一个功能应用程序的粗略框架,但遇到了障碍。

该应用程序的工作方式如下:

选择顶部按钮Flash Cards后,应用程序将启动一个新活动:

然后,用户可以通过单击添加牌组按钮来添加新牌组。一旦创建了套牌,其想法是用户将能够将卡片添加到相应的主题中。

这就是我卡住的地方。我需要知道创建仅对应于给定主题的列表的最佳做法是什么。例如,生物闪卡放在生物牌下面,化学闪卡放在化学牌下面,等等。

这是我的甲板列表活动代码。到目前为止,我的想法包括以某种方式将 2D ArrayList 捆绑到创建闪存卡的新活动中。非常感谢任何反馈。谢谢!

LISTOFDECKS活动:

 public class ListOfDecksActivity extends Activity implements OnClickListener {

    private ListView listView1;
    private Button addDeck;
    final static int deckData = 0;
    private ArrayList<Deck> deck_data;
    private DeckAdapter adapter;
    private View header;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.deck_list);

        instantiate();

    }

    private void instantiate() {
        deck_data = new ArrayList<Deck>();// holds the decks of flash cards

        adapter = new DeckAdapter(this, R.layout.deck_item_row,// creates a new
                                                                // custom
                                                                // adapter
                deck_data); // from the adapter class

        listView1 = (ListView) findViewById(R.id.listView1);
        header = (View) getLayoutInflater().inflate(R.layout.deck_header_row,
                null);// Sets up the header for the
                        // list
        listView1.addHeaderView(header);// adds the header to the list view
        listView1.setAdapter(adapter);
        listView1.setOnItemClickListener(new OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
                    long arg3) {
                Intent test = new Intent(ListOfDecksActivity.this,
                        FlashCard.class);
                startActivity(test);

            }
        });
        addDeck = (Button) findViewById(R.id.bAdd);
        addDeck.setOnClickListener(this);// sets up on click listener for submit
                                            // button

    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        String nameHolder;
        data.getExtras();
        nameHolder = data.getStringExtra("deckTitle");
        deck_data.add(new Deck(R.drawable.ic_launcher, nameHolder));
        adapter.notifyDataSetChanged();

    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
        case (R.id.bAdd):
            Intent addDeck = new Intent(ListOfDecksActivity.this,
                    AddDeckActivity.class);

            startActivityForResult(addDeck, 1);
        }

    }

}

PS 为了清楚起见,我有照片,但是由于垃圾邮件机制,新用户无法发布图片。如果您想查看更多代码或需要更多详细信息,请随时询问。

4

1 回答 1

0

重申这个问题:“创建仅包含来自给定主题的卡片的套牌的最佳做法是什么?”

如果您不打算在列表之间重复使用卡片或在用户之间重复使用卡片或列表(例如,使它们可共享、可搜索),则使用数组列表很好。另一个考虑因素是,如果卡片都嵌套在特定的 Deck 对象中,您将无法跟踪很多元数据。对于最简单的“跟踪一个用户的卡片”用例,您基本上可以拥有一个平面 NOSQL 数据模型的套牌。

然而,在这种情况下,“最佳实践”可能是通过带有连接语句的 SQL 数据库将用户 Card 对象与用户 Deck 对象相关联,并提出某种机制将用户数据同步回中央 Web 服务。这是因为大多数服务都希望用户创建的卡片可供所有其他用户搜索和添加。

于 2013-05-14T15:26:10.540 回答