确定单击哪个膨胀项目

时间:2013-05-06 06:48:15

标签: android

我有这个观点:

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以及如何确定点击哪个产品?

非常感谢任何帮助。

2 个答案:

答案 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

希望这会对你有所帮助。