我有一个包含Product(productid,productname)的列表视图。为此,我在下面填写ArrayList。
ArrayList<Product> products = new ArrayList<Product>();
String strJson = Utility.loadJSONFromAsset("products.json");
JSONObject jsonRootObject = new JSONObject(strJson);
JSONArray jsonArray = jsonRootObject.optJSONArray("products");
for(int i=0; i < jsonArray.length(); ++i){
JSONObject jsonObject = jsonArray.getJSONObject(i);
Product p = new Product (Integer.parseInt(jsonObject.optString("id")), jsonObject.optString("name").toString());
products.add(p);
}
ProductAdapter adapter = new ProductAdapter(getApplicationContext(), products);
productListView.setAdapter(adapter);
productListView.setVisibility(View.VISIBLE);
现在setOnItemClickListener我想打开一个带有产品名称的新活动。
productListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Toast.makeText(getApplicationContext(), "haha" + position, Toast.LENGTH_SHORT).show();
Context context = getApplicationContext();
Intent intent = new Intent(context, com.example.testbot.ProductDetailActivity.class );
intent.putExtra("productname", products.get(position).getName());
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent);
}
});
但它给出了错误。不能引用封闭范围中定义的非最终局部变量产品。
如何解决这个问题?