我有这样的看法:
list.xml
<LinearLayout>
<ImageView />
<TextView />
<TextView />
</LinearLayout>
膨胀成这个观点:
main.xml
<HorizontalScrollView>
<LinearLayout/>
</HoriztontalScrollView>
数据来自json并且是动态的。
try{
products = jsonObj.getJSONArray(Constants.PRODUCT_ARR);
if(products.length() != 0){
for(int i = 0; i < products.length(); i++){
JSONObject c = products.getJSONObject(i);
String sName = c.getString(Constants.SHOP_NAME);
String productId = c.getString(Constants.SHOP_ID);
String desc = c.getString(Constants.SHOP_DESC);
String imageUrl = c.get(Constants.SHOP_IMAGE_URL) == JSONObject.NULL ? null : c.getString(Constants.PRODUCT_IMAGE_URL);
String imgWidth = c.get(Constants.IMAGE_WIDTH) == JSONObject.NULL ? null : c.getString(Constants.IMAGE_WIDTH);
String imgHeight = c.get(Constants.IMAGE_HEIGHT) == JSONObject.NULL ? null : c.getString(Constants.IMAGE_HEIGHT);
String productOwnerId = c.getString(Constants.SHOP_OWNER_ID);
if(imgHeight != null && imgWidth != null && imageUrl != null){
product = new ProductRowItem(imageUrl, sName, productId, desc, Integer.parseInt(imgHeight), Integer.parseInt(imgWidth), productOwnerId);
productItems.add(product);
}
}
}else{
Toast toast = Toast.makeText(getApplicationContext(),"SHOP NULL",
Toast.LENGTH_LONG);
toast.setGravity(Gravity.CENTER, 0, 0);
toast.show();
}
}catch(JSONException e){
throw new RuntimeException(e);
}
然后我膨胀list.xml
到main.xml
.
final ProductBaseAdapter adapter = new ProductBaseAdapter(context, productItems);
LinearLayout layout = (LinearLayout) findViewById(R.id.linear_temp);
for(int i = 0 ; i < adapter.getCount() ; i++){
View item = adapter.getView(i, null, null);
layout.addView(item);
item.setTag("test"+i);
}
但是,如何为每个项目设置一个 OnClickListener 呢?因为单击每个项目将启动一个新活动,其中包含每个项目的详细信息product
。我的问题是如何识别单击了哪个项目以及如何监听 onclick。我知道setTag()
但getTag()
我对如何实现这些感到困惑。我的计划是使用产品 ID 作为我的参数,setTag
这样我只需获取该标签即可识别点击了哪个产品。但我仍在努力解决这个问题。但就目前而言,任何人都可以阐明这一点,关于如何/在哪里放置我的 onclicklistener 方法以及如何确定点击了哪个产品?
任何帮助是极大的赞赏。