我有这个观点:
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以及如何确定点击哪个产品?
非常感谢任何帮助。
答案 0 :(得分:0)
您可以这样做: -
for(int i = 0 ; i < adapter.getCount() ; i++){
View item = adapter.getView(i, null, null);
item.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
//Call your details activity here.
}
});
layout.addView(item);
item.setTag("test"+i);
}
答案 1 :(得分:0)
您应该使用一些独特的标识,例如位置(首先使用您已点击的位置)。您正在使用产品项添加从Web服务下载的所有元素。它应该是数组列表或数组。因此,使用您单击的位置,您可以访问存储的数组列表或数组中的数据。因此,您可以知道您点击了哪个项目。希望这会帮助你。
要了解有关访问settag和get标签的更多信息,请参阅本教程。 http://amitandroid.blogspot.in/2013/03/android-listview-with-checkbox-and.html
希望这会对你有所帮助。