我有一个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.
}
}
如何在上述方法中设置数据。
提前致谢
答案 0 :(得分:1)
您可以在开始新活动时发送额外数据和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
。如果您使用它,则可以在调用finish
之前使用setResult
设置结果代码。
答案 1 :(得分: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类的变量。