我无法弄清楚如何通过活动开关传递信息 我目前有一个Activity,我可以在其中添加一个客户端到数据库,我有一个Activity来查看ListView中的所有客户端。
我想要的是当用户点击ListView中的客户端以使其返回到addclient Activity时,所有字段都从数据库填充。
这是用户查看客户端的活动
public class ViewClientActivity extends Activity
{
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.viewclient_activity);
DBHandler handler = new DBHandler(this, null, null, 1);
SQLiteDatabase db = handler.getWritableDatabase();
final Cursor ClientCursor = db.rawQuery("SELECT * FROM clients", null);
ListView allClients = (ListView) findViewById(R.id.allClients);
final ClientCursorAdapter clientAdapter = new ClientCursorAdapter(this, ClientCursor);
allClients.setAdapter(clientAdapter);
allClients.setOnItemClickListener(new AdapterView.OnItemClickListener()
{
public void onItemClick(AdapterView<?> parent, View view, int position, long id)
{
Intent AddClientActivity = new Intent(getApplicationContext(), AddClientActivity.class);
startActivity(AddClientActivity);
}
});
}
}
答案 0 :(得分:1)
您需要使客户端类信息实现Parcelable
类。这样,您就可以将该信息添加到用于打开第二个Activity的Intent
中。在第二个活动中,您可以通过调用getIntent()
要将Parcelable
数据添加到de intent使用intent.putExtra()
并从中获取,请使用intent.getParcelableExtra()
答案 1 :(得分:0)
当他点击列表视图中的客户端时,它返回到addclient活动但是从数据库中填写了所有字段
当你&#34;返回&#34;时,你正在做SELECT *
,所以一切都将被正确选择和更新,假设它已在数据库中更新。
您的任务存在于AddClientActivity
内,以创建new DBHandler
并相应地更新您的数据。
如果您需要传递任何内容,那么它将是您点击的行的ID,您可以在setTag
类的ClientCursorAdapter
方法中使用getView
膨胀的观点。然后,(Long) view.getTag()
在点击中接收。
另外,请将getReadableDatabase()
用于CursorAdapter
答案 2 :(得分:0)
这就是我最终做的传递我需要的信息
gridView.setOnItemClickListener(new AdapterView.OnItemClickListener()
{
public void onItemClick(AdapterView<?> parent, View v, int position, long id)
{
IMAGES = imagesPath[0] + "|" + imagesPath[1] + "|" + imagesPath[2] + "|" +
imagesPath[3] + "|" + imagesPath[4] + "|" + imagesPath[5];
Intent intent = new Intent(AddClientActivity.this, ImageViewActivity.class);
intent.putExtra("IMAGES", IMAGES);
intent.putExtra("POSITION", position);
startActivity(intent);
}
});