【问题标题】:fragments or database.. what is preferable?片段或数据库..什么是可取的?
【发布时间】:2016-04-01 18:20:35
【问题描述】:

在我的申请中,我使用listview 列出了 10 个学校名称。通过选择学校名称,屏幕上应显示相应的信息,例如图像、有关该学校的一些描述、联系电话等信息。

我应该使用片段来定义有关每所学校的信息吗?如果是,那么我应该使用哪个片段以及要覆盖哪个方法?

将这些信息存储在数据库中可以解决这个问题吗?

我能得到一些与此相关的例子吗?

 package com.example.mayurijoshi.puneclassified1;

import android.app.ListActivity;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.ArrayAdapter;
import android.widget.ListView;

import android.view.View;
import android.widget.AdapterView;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;


public class school extends ListActivity {

    //Defining android ListView
    ListView mListView;

    //Elements that will be displayed in android ListView
    String[] schools = new String[]{"School 1", "School 2", "School 3",
            "School 4", "School 5", "School 6", "School 7", "School 8", "School 9", School 10};


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_school);

        mListView=(ListView) findViewById(R.id.listschool);

        //Declaring Array adapter
        ArrayAdapter<String> schoolAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, schools);

        //Setting the android ListView's adapter to the newly created adapter
        mListView.setAdapter(schoolAdapter);

        mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

                int itemPosition = position;


                String itemValue = (String) mListView.getItemAtPosition(position);


                Intent intent = new Intent(getApplicationContext(),SchoolDesc.class);


                Here we will pass the previously created intent as parameter
                startActivity(intent);

            }
        });

        }


    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_school, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {

        int id = item.getItemId();


        if (id == R.id.action_settings) {
            return true;
        }

        return super.onOptionsItemSelected(item);
    }
}

【问题讨论】:

    标签: android database listview android-fragments


    【解决方案1】:

    片段不是数据库的替代品。片段用于显示内容,数据库用于永久保存数据,以便即使在关闭并再次打开所有数据后也可以访问相同的数据。

    在这里,您需要使用两个活动。一种用于显示列表视图。另一个用于在您点击一个学校行后显示个别学校的详细信息。当您点击学校行时,将学校 ID 或姓名作为额外的意图传递并开始第二个活动。第二个活动可以根据ID或名称从数据库中选择相应的学校详细信息,然后显示这些详细信息。

    但是,为此,您需要在尝试显示内容之前以某种方式创建和填充数据库。如果您需要更多说明,请告诉我。 :)

    【讨论】:

    • 所以我应该在第二个活动中使用 switch case 根据 ID 选择相应的学校吗?
    • 我不确定你的整个代码结构是怎样的,但假设你有一个数据库,你必须使用 ID 字段对数据库运行选择查询,然后获取所有值并显示。请接受它的答案对你有帮助。 :)
    【解决方案2】:

    所以在这里,我应该使用片段来定义信息吗?关于每所学校。

    片段是 UI 部分或轻量级活动。是的,您应该使用片段来显示此类数据。您编写的用于打开新活动SchoolDesc.class 的代码也可以使用。覆盖方法与 Activity 几乎相同。你应该查看官方指南here

    至于数据库部分,当然可以使用sqllite来存储信息和图片。但片段不用于存储或定义任何数据,仅用于从文件或数据库中获取数据并显示出来。

    【讨论】:

      猜你喜欢
      • 2011-01-11
      • 1970-01-01
      • 2014-10-24
      • 2021-07-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-02
      • 2015-03-27
      相关资源
      最近更新 更多