我在弄清楚如何通过活动开关传递信息时遇到了麻烦。
我当前有一个活动,我可以在其中将客户端添加到数据库,并且我有一个活动来查看 ListView 中的所有客户端。
我想要的是,当用户单击 ListView 中的客户端时,它返回到 addclient 活动,并从数据库中填写所有字段。
这是用户查看客户端的活动
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);
}
});
}
}
使客户端类信息实现Parcelable
类。这样,您就可以将该信息添加到用于打开第二个活动的Intent
中。从第二个活动中,您可以从通过调用获得的捆绑包中获取此信息getIntent()
要将Parcelable
数据添加到意向使用intent.putExtra()
并从中获取数据,请使用intent.getParcelableExtra()
当他单击列表视图中的客户端以使其返回到 AddClient 活动但从数据库中填写所有字段
时
当您"返回"时,您正在执行SELECT *
,因此假设它在数据库中进行了更新,则所有内容都将被正确选择和更新。
您的任务存在于创建new DBHandler
并相应地更新数据AddClientActivity
中。
如果需要传递任何内容,它将是单击的行的 ID,您可以在要放置的膨胀视图上的 ClientCursorAdapter
类的 getView
方法中使用setTag
。然后,(Long) view.getTag()
在点击中接收。
另外,请使用getReadableDatabase()
光标适配器
这就是我最终为了传递我需要的信息所做的
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);
}
});