我必须将我的价值从一项活动转移到另一项活动。 我用Json从数据库下载数据,它可以正常工作。
我的第一项活动:
public class ListAdapter extends BaseAdapter
{
Context context;
List<cources> valueList;
HashMap<String, String> resultp = new HashMap<String, String>();
public ListAdapter(List<cources> listValue, Context context)
{
this.context = context;
this.valueList = listValue;
}
@Override
public int getCount()
{
return this.valueList.size();
}
@Override
public Object getItem(int position)
{
return this.valueList.get(position);
}
@Override
public long getItemId(int position)
{
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent)
{
ViewItem viewItem = null;
if(convertView == null)
{
viewItem = new ViewItem();
LayoutInflater layoutInfiater = (LayoutInflater)this.context.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
//LayoutInflater layoutInfiater = LayoutInflater.from(context);
convertView = layoutInfiater.inflate(R.layout.list_adapter_view_test, null);
viewItem.txtTitle = (TextView)convertView.findViewById(R.id.nome_prodotto);
viewItem.txtDescription = (TextView)convertView.findViewById(R.id.descrizione_prodotto);
viewItem.txtPrice = (TextView)convertView.findViewById(R.id.prezzo);
convertView.setTag(viewItem);
}
else
{
viewItem = (ViewItem) convertView.getTag();
}
viewItem.txtPrice.setText(valueList.get(position).prezzo_prodotto);
viewItem.txtTitle.setText(valueList.get(position).nome_prodotto);
viewItem.txtDescription.setText(valueList.get(position).descrizione_prodotto);
convertView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
// Get the position
Intent intent = new Intent(context, Dettaglio_Prodotto.class);
// Pass all data country
intent.putExtra("nome_prodotto", "test");
// Start SingleItemView Class
context.startActivity(intent);
}
});
return convertView;
}
}
class ViewItem
{
TextView txtTitle;
TextView txtDescription;
TextView txtPrice;
}
我必须传递值:
viewItem.txtPrice.setText(valueList.get(position).prezzo_prodotto);
我的第二个活动我有代码:
Intent i = getIntent();
nome_prodotto = i.getStringExtra("nome_prodotto");
我怎么做? 如果我把:
intent.putExtra("nome_prodotto",viewItem.txtTitle.setText(valueList.get(position).nome_prodotto));
我有错误: 变量在内部类中访问。需要宣布最终
答案 0 :(得分:1)
建议:如果您正在使用ArrayAdapter
数据,请使用BaseAdapter
而不是List
。
如IDE所示,制作最终变量。
...
else
{
viewItem = (ViewItem) convertView.getTag();
}
// This is the item in the current position
final cources item = (cources) getItem(position);
然后,您可以使用它而不是重复调用valueList.get(position)
viewItem.txtPrice.setText(item.prezzo_prodotto);
viewItem.txtTitle.setText(item.nome_prodotto);
viewItem.txtDescription.setText(item.descrizione_prodotto);
convertView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
// Get the position
Intent intent = new Intent(context, Dettaglio_Prodotto.class);
// Pass all data country
intent.putExtra("nome_prodotto", item.nome_prodotto);
// Start SingleItemView Class
context.startActivity(intent);
}
});
答案 1 :(得分:0)
在为实例创建新onTouchListener的方法中使用valueList时,这是一个内部类。
该类访问的任何变量必须是final或在类中声明。如果你在内部类中创建一个新的int,则表示没有 必须是最终的。但是如果int被声明为外部,那么它必须是最终的。
在您的情况下,变量position
必须标记为最终
答案 2 :(得分:-1)
我猜你是在尝试做这样的事情
intent.putExtra("nome_prodotto", valueList.get(position).prezzo_prodotto);
方法putExtra需要一个键(String)和一个值(在你的情况下,你传递一个字符串值)。