我试图传递一个在列表视图中选择的值,但传递的值与所选的值不匹配。怎么了?这是我的完整代码。我得到的值不是所选的值。
ListAdapter adapter = new ArrayAdapter<Dettaglio>(this, R.layout.detlezione, R.id.tv_nomria, dettagli){
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View row = super.getView(position, convertView, parent);
final TextView tvId;
final TextView tvCaa;
ImageView tvC;
tvC = (ImageView) row.findViewById(R.id.color_view);
tvId = (TextView) row.findViewById(R.id.lbl);
tvCaa = (TextView) row.findViewById(R.id.tv_nome_caa);
tvCaa.setTypeface(tf);
Dettaglio d = dettagli.get(position);
tvId.setText(d.id+"");
tvCaa.setText(d.caa+"");
tvCaa.setTextColor(d.color);
tvC.setBackgroundColor(d.color);
lista.setOnItemClickListener(new OnItemClickListener(){
@Override
public void onItemClick(AdapterView<?> parent, View view,int position, long id) {
Intent invia_a_movimenti = new Intent(Sce.this, Movi.class);
Bundle extras = new Bundle();
extras.putString("caa", tvCaa.getText().toString());
extras.putInt("co", tvCaa.getCurrentTextColor());
invia_a_movimenti.putExtras(extras);
startActivity(invia_a_movimenti);
}
});
return row;
};
};
lista.setAdapter(adapter);-UPDATE- ok,但是我的onResume ()没有返回结果,为什么?
@Override
protected void onResume(){
Bundle extras = getIntent().getExtras();
c_scelta.setText(i.getStringExtra("caa"));
int color;
color = (i.getIntExtra("co", 0));
c_scelta.setTextColor(colore_ricevuto);
super.onResume();
}发布于 2013-12-05 07:46:03
我不确定(因为代码不够清楚),但您应该能够这样做:
extras.putString("caa", ((TextView)view).getText().toString());
extras.putInt("co", ((TextView)view).getCurrentTextColor());选择的项通过OnItemClickListener的方法签名传递。因此,单击的项是变量view。使用view获取有关已单击项目的信息。此外,您还可以使用position或id变量。
编辑:
您不应为每行分配onItemClickListener。相反,您只需对其赋值一次,因此将该赋值放在getView方法之外。下面的代码应该可以工作:
ListAdapter adapter = new ArrayAdapter<Dettaglio>(this, R.layout.detlezione, R.id.tv_nomria, dettagli) {
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View row = super.getView(position, convertView, parent);
TextView tvId = (TextView) row.findViewById(R.id.lbl);
TextView tvCaa = (TextView) row.findViewById(R.id.tv_nome_caa);
ImageView tvC = (ImageView) row.findViewById(R.id.color_view);
tvCaa.setTypeface(tf);
Dettaglio d = dettagli.get(position);
tvId.setText(d.id + "");
tvCaa.setText(d.caa + "");
tvCaa.setTextColor(d.color);
tvC.setBackgroundColor(d.color);
return row;
};
};
lista.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Intent invia_a_movimenti = new Intent(Sce.this, Movi.class);
Bundle extras = new Bundle();
TextView tvCaa = (TextView) view.findViewById(R.id.tv_nome_caa);
extras.putString("caa", tvCaa.getText().toString());
extras.putInt("co", tvCaa.getCurrentTextColor());
invia_a_movimenti.putExtras(extras);
startActivity(invia_a_movimenti);
}
});
lista.setAdapter(adapter);尽管如此,我还是建议你使用ViewHolder。在谷歌上搜索并学好它。
发布于 2013-12-05 07:51:11
我想要理解你的想法。您尝试访问列表视图中的选定文本视图并获取其属性,然后在回调时的onSelecteditem方法上,它会提供一些参数,例如包含文本视图的列表中的选定视图以及选定视图的位置和id。现在您需要的是在选定项中获取文本视图,因此您需要
TextView selectedTextView = (TextView)view.findViewById(R.id.textviewId);
extras.putString("caa",selectdTextView.getText().toString());现在,您可以访问文本视图中的任何数据
https://stackoverflow.com/questions/20388376
复制相似问题