我有我的数据库,我在ListView中显示一些数据。当用户单击ListView中的项目
时,我想将数据传递给另一个活动long idProjeto;
ProjetosDAO pDAO;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_lista_projetos);
ListView lv = (ListView)findViewById(R.id.lvListaProjetos);
final ListaProjetosAdapter adapter = new ListaProjetosAdapter(this);
pDAO = new ProjetosDAO(this);
pDAO.open();
Cursor cursor = pDAO.consultaParaListaprojetos();
String data = "";
String cliente = "";
String tipoProjeto = "";
String status = "";
if(cursor != null && cursor.moveToFirst()){
do{
data = cursor.getString(0);
cliente = cursor.getString(1);
tipoProjeto = cursor.getString(2);
status = cursor.getString(3);
idProjeto = Long.parseLong(cursor.getString(4));
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
try {
Date date = sdf.parse(data);
data = new SimpleDateFormat("dd/MM/yyyy HH:mm").format(date);
} catch (ParseException e) {
e.printStackTrace();
}
adapter.addDadosListaprojetos(data, cliente, tipoProjeto, status, idProjeto);
}while(cursor.moveToNext());
cursor.close();
pDAO.close();
}
lv.setAdapter(adapter);
lv.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
Intent intent = new Intent(ListaProjetosActivity.this, ListaCheckinsActivity.class);
intent.putExtra("idProjeto", idProjeto);
startActivity(intent);
}
});
}
public void novoProjeto(View v) {
Intent intent = new Intent(this, NovoProjetoActivity.class);
startActivity(intent);
}
}
我想将此idProjeto传递给另一个活动,但它只传递最后一项的数据。每个循环从while开始,变量得到其他值。 如何获得正确的价值?
答案 0 :(得分:2)
当然,loop
的每次迭代都会覆盖该值。而不是将它们放入long
变量,而是将它们放入ArrayList
。然后使用position
中onItemClick()
的值从ArrayList
lv.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
idProjeto = arrayList.get(position); // assuming you create a member variable ArrayList<Long> arrayList = new ArrayList<Long>()
Intent intent = new Intent(ListaProjetosActivity.this, ListaCheckinsActivity.class);
intent.putExtra("idProjeto", idProjeto);
startActivity(intent);
答案 1 :(得分:0)
构建Projeto类以模拟对象:
public class Projeto {
private long idProjeto;
private String data;
private String cliente;
private String tipoProjeto;
private String status;
public Projeto() {
super();
}
public Projeto(long idProjeto, String data, String cliente, String tipoProjeto, String status) {
super();
this.idProjeto = idProjeto;
this.data = data;
this.cliente = cliente;
this.tipoProjeto = tipoProjeto;
this.status = status;
}
public long getIdProjeto() {
return idProjeto;
}
public void setIdProjeto(long idProjeto) {
this.idProjeto = idProjeto;
}
public String getData() {
return data;
}
public void setData(String data) {
this.data = data;
}
public String getCliente() {
return cliente;
}
public void setCliente(String cliente) {
this.cliente = cliente;
}
public String getTipoProjeto() {
return tipoProjeto;
}
public void setTipoProjeto(String tipoProjeto) {
this.tipoProjeto = tipoProjeto;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
}
然后在你的适配器中将idProjeto字段作为id,因此它将作为id参数传递给onitemclicklistener:
public class ProjetoAdapter extends ArrayAdapter<Projeto> {
public ProjetoAdapter(Context context, int resource,
int textViewResourceId, List<Projeto> objects) {
super(context, resource, textViewResourceId, objects);
}
public ProjetoAdapter(Context context, int resource,
int textViewResourceId, Projeto[] objects) {
super(context, resource, textViewResourceId, objects);
}
public ProjetoAdapter(Context context, int resource, int textViewResourceId) {
super(context, resource, textViewResourceId);
}
public ProjetoAdapter(Context context, int resource, List<Projeto> objects) {
super(context, resource, objects);
}
public ProjetoAdapter(Context context, int resource, Projeto[] objects) {
super(context, resource, objects);
}
public ProjetoAdapter(Context context, int resource) {
super(context, resource);
}
@Override
public long getItemId(int position) {
return this.getItem(position).getIdProjeto();
}
// Other methods that you want to override
}