0

我的第一个活动包含一个列表视图,每个单元格中都有文本视图,并使用自定义适配器。因此,如果您单击任何项​​目,它将打开一个包含文本字段的表单活动。用户可以填写详细信息,一旦按下保存表单按钮,详细信息就会出现在列表视图中。现在我正在尝试将项目动态添加到列表中。我创建了一个按钮,单击该按钮会添加一个新的实例项,以便更多用户可以以相同的方式注册。我已经能够实现这些功能。但是,我现在的问题是,当我单击新添加的项目并转到表单活动并单击保存时,我回到 listview 活动后看不到新添加的条目。我看到的只是第一个条目独自的。所以我猜它一离开活动就会被摧毁。

这是我的 ListView 活动代码:

public class FormTableActivity extends Activity {

    private PassengerListAdapter adapter;
    Button add_passenger;
    String mrzdata,ic_data,name_data;
    SharedPreferences nPref;

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

        nPref = PreferenceManager.getDefaultSharedPreferences(this);


        mrzdata = nPref.getString("MRZ", "");
        name_data = nPref.getString("resultData", "");

        ic_data = nPref.getString("icdata", "");

        final ListView lv1 = (ListView) findViewById(R.id.custom_list);

        adapter = new PassengerListAdapter(this);
        adapter.add(new CustomerDetails(ic_data, name_data, mrzdata));

        add_passenger = (Button) findViewById(R.id.add_user);
        add_passenger.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

//                mrzdata = "";
//                name_data = "";
//                ic_data = "";
                adapter.add(new CustomerDetails(ic_data, name_data, mrzdata));


            }
        });


        lv1.setAdapter(adapter);

        lv1.setOnItemClickListener(new AdapterView.OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> a, View v, int position, long id) {


                Intent intent = new Intent(v.getContext(), FirstActivity.class);
                startActivity(intent);


            }


        });
    }
4

2 回答 2

0

您必须将这些新添加的项目保存到某个地方,例如 SQLite 数据库并在创建时检索它们以填充列表视图

如果需要,您可以在此处查看,代码已注释,这里我有一个带有自定义适配器的列表视图,其中包含两个项目的提要名称和它的 url

我使用文本输入对话框(带有两个编辑文本)添加 URL 和名称,保存到 DB,并在创建时检索它们以填充列表视图 https://github.com/enricocid/iven-feed-reader/blob/master- as/project/app/src/main/java/com/iven/lfflfeedreader/mainact/ListActivity.java

于 2015-12-15T07:55:37.023 回答
0

在 Intent 之间传递数据的最简单方法是

 Intent intent = new Intent(getBaseContext(), your_list_view_activity.class);
intent.putExtra("String_Key", data1);
//data1 could be an array of string where you have hold the values previously
startActivity(intent);

现在在你的 list_view_activity

Bundle extras = getIntent().getExtras();
if (extras != null) {
    String [] value = extras.getString("String_Key");
}

这样你不会得到任何异常,但如果有数据,你可以填充你的 listView 。

另一种获取数据的方法是通过 SharedPreference 但我不会推荐它,因为它会增加应用程序的大小。

于 2015-12-15T07:59:58.150 回答