2

我有一个 ListFragment,我想在列表视图中单击时编辑项目。

我正在使用这种方法。

    @Override
    public void onListItemClick(ListView l, View v, int position, long id) {
        super.onListItemClick(l, v, position, id);
        if(dbHelper != null){
            Item item = dbHelper.getProjectRowById(id);
            Intent intent = new Intent(getActivity(), Save.class);
            //Here i want to start the activity and set the data using item.  
        }           
    }

我如何在上述方法中设置数据。

提前致谢

4

2 回答 2

1

当你开始一个新的 Activity 时,你可以发送额外的数据和一个 Intent。

@Override
public void onListItemClick(ListView l, View v, int position, long id) {
    super.onListItemClick(l, v, position, id);
    if(dbHelper != null){
        Item item = dbHelper.getProjectRowById(id);

        // Put the data on your intent.
        Intent intent = new Intent(getActivity(), Save.class);
        // If Item implements Serializable or Parcelable, you can just send the item:
        intent.putExtra("dataToEdit", item);
        // Otherwise, send the relevant bit:
        intent.putExtra("data1", item.getSomeDataItem());
        intent.putExtra("data2", item.getAnotherDataItem());
        // Or, send the id and look up the item to edit in the other activity.
        intent.putExtra("id", id);

        // Start your edit activity with the intent.
        getActivity().startActivity(intent);
    }
}

在编辑活动中,您可以获得启动它的 Intent。

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(...);

    Intent intent = getIntent();
    if (intent.hasExtra("dataToEdit")) {
        Item item = (Item) intent.getSerializableExtra("dataToEdit");
        if (item != null) {
            // find edittext, and set text to the data that needs editing
        }
    }

}

然后用户可以编辑该文本,您可以在他们单击保存或其他任何内容时将其保存到数据库中。然后调用finish您的保存活动。

如果您需要将保存的数据发送回原始活动(而不是说,只是在 中重新查询onStart),请查看startActivityForResult. 如果你使用它,你可以setResult在调用之前设置一个结果代码finish

于 2013-01-19T04:03:55.860 回答
0

利用

@Override
public void onListItemClick(ListView l, View v, int position, long id) {
    super.onListItemClick(l, v, position, id);
    if(dbHelper != null){
        //don't do this here Item item = dbHelper.getProjectRowById(id);
        Intent intent = new Intent(getActivity(), Save.class);
        intent.putExtra("MyItemId", id);
    }           
}

在您的第二个活动中,您获取 Id 并加载元素

Bundle extras = getIntent().getExtras();
long id = extras.getInt("MyItemId");
Item item = dbHelper.getProjectRowById(id);

你也需要 dbHelper。如果您只想要它的一个实例,请将其设为 App 类的变量。

于 2013-01-19T04:05:14.737 回答