0

我有这样的看法:

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

任何帮助是极大的赞赏。

4

2 回答 2

0

您应该使用一些唯一标识,例如位置(使用此首先检查您单击了哪个位置)。您正在使用产品项目来添加您从 Web 服务下载的所有元素。它应该是数组列表或数组。因此,使用您单击的位置,您可以访问存储的数组列表或数组中的数据。所以从这里你可以知道你点击了哪个项目。希望这会帮助你。

要了解有关访问 settag 和 get tag 的更多信息,请遵循本教程。 http://amitandroid.blogspot.in/2013/03/android-listview-with-checkbox-and.html

希望这会帮助你。

于 2013-05-06T06:54:24.783 回答
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);
} 
于 2013-05-06T06:53:46.880 回答