【问题标题】:How To Get Dynamically Created Imageview or textview clicked id or position in android?如何获取动态创建的 Imageview 或 textview 在 android 中单击 id 或位置?
【发布时间】:2013-03-10 19:45:15
【问题描述】:

我想在滚动视图中创建动态图像视图和按钮,所以我想获取动态创建的单击项目的 ID 我如何才能在这里得到这是我的代码

公共类 TestActivity 扩展 Activity 实现 OnClickListener {

    private static final String TAG_DATA="data";
    private static final String TAG_ADVERTISE="advertisments";
    private static final String TAG_ADVERTISEID="advt_id";
    String advertiseid;

    private static final String TAG_SHOWTEXT="showtext";
    String showtext;

    private static final String TAG_PRODUCTINFO="product_info";
    String productinfo;

    private static final String TAG_THUMBIMAGE="thumbsrc";
    String thumbimage;

    private static final String TAG_DISTANCE="distance";
    String distance;

    private static final String TAG_STIPCIATED="stipciated";
    String stipciated;


    ArrayList<HashMap<String, String>> listadvertise = new ArrayList<HashMap<String,String>>();
    ArrayList<HashMap<String, String>> listadvertise1 = new ArrayList<HashMap<String,String>>();
    ArrayList<HashMap<String, String>> listadvertise2 = new ArrayList<HashMap<String,String>>();
    // Webservice parameter for home advertise
    String url;
    String fbid;
    String latitude;
    String longitude;
    String passdistance;
    String offset;

    // Webservice parameter for stipciated advertise

    String userid;
    String stipciate;

    int screenheight;
    int screenwidth;
    AlertDialog alertDialog;
    private ProgressDialog progressDialog;
    ImageView imagemenu;

    ScrollView scrollView3;


    ImageView im;
    LinearLayout homelistlayout1;
    LinearLayout homelistlayout2;
    public static final int img=50000;

    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.test);

        alertDialog = new AlertDialog.Builder(this).create();
        DisplayMetrics screensize= new DisplayMetrics();
        getWindowManager().getDefaultDisplay().getMetrics(screensize);

        screenheight=screensize.heightPixels;
        screenwidth=screensize.widthPixels;

        Log.e("Screen Height","---->"+screenheight);
        Log.e("Screen Width ","---->"+screenwidth);


        RelativeLayout headerlLayout = (RelativeLayout)findViewById(R.id.headerlayout);
        headerlLayout.setLayoutParams(new RelativeLayout.LayoutParams(LayoutParams.FILL_PARENT,((screenwidth*8)/100)+10));

        if(CheckConnection.getInstance(this).isOnline(this))
        {

        //  new HomeAsyncTask().execute("");

        }
        else
        {
            alert();
        }

        imagemenu=(ImageView)findViewById(R.id.imagemenu);
        imagemenu.setOnClickListener(new OnClickListener() 
        {
            public void onClick(View v)
            {
                    Intent i = new Intent(TestActivity.this,HorizontalActivity.class);
                    startActivity(i);
            }
        });



      scrollView3=(ScrollView)findViewById(R.id.scrollview3);

        scrollView3.post(new Runnable() {

            public void run()
            {

                scrollView3.scrollTo(0, 200);
            }
        });


        homelistlayout1=(LinearLayout)findViewById(R.id.homelistlayout1);
        homelistlayout1.setPadding(0, 100, 0, 0);
        homelistlayout2=(LinearLayout)findViewById(R.id.homelistlayout2);


        for(int i=0;i<12;i++)
        {

            im= new ImageView(TestActivity.this);
            im.setLayoutParams(new LinearLayout.LayoutParams(200, 200));

            if(i%2==0)
            {

                    im.setImageResource(R.drawable.adv);
                    im.setId(i);
                    homelistlayout1=(LinearLayout)findViewById(R.id.homelistlayout1);
                    homelistlayout1.addView(im);


            }
            else
            {
                im.setImageResource(R.drawable.adv2);
                im.setId(i);
                homelistlayout2=(LinearLayout)findViewById(R.id.homelistlayout2);
                homelistlayout2.addView(im);

                }

            }   


            im.setOnClickListener(new OnClickListener() {

                public void onClick(View v) {

                    ImageView iv=(ImageView) v;

                    Log.e("sfas","-->"+iv.getId());

                }
            });
            }
       }

public void onClick(View v) {

    Log.e("Clicked","----->"+v.getId());
    switch (v.getId()) 
    {
    case img:
                    Log.e("Clicked","----->"+v.getId());
            break;

    default:
        break;
    }

}

}

【问题讨论】:

    标签: android dynamic android-imageview


    【解决方案1】:

    只需要对您的代码进行更改,

    1. 您必须在 ImageView 的 for 循环中添加 im.setOnClickListener(this);
    2. 删除下面的方法

      im.setOnClickListener(new OnClickListener() {
              public void onClick(View v) {
                  ImageView iv=(ImageView) v;
                  Log.e("sfas","-->"+iv.getId());
              }
          });
      
    3. 覆盖 onClick() 因为您已经在 Activity 中实现了onClickcListener

    查看下面的代码,(并与您的代码匹配以了解实际问题)

    public class TestActivity extends Activity implements OnClickListener 
    {
        private static final String TAG_DATA="data";
        private static final String TAG_ADVERTISE="advertisments";
        private static final String TAG_ADVERTISEID="advt_id";
        String advertiseid;
        private static final String TAG_SHOWTEXT="showtext";
        String showtext;
        private static final String TAG_PRODUCTINFO="product_info";
        String productinfo;
    
        private static final String TAG_THUMBIMAGE="thumbsrc";
        String thumbimage;
    
        private static final String TAG_DISTANCE="distance";
        String distance;
    
        private static final String TAG_STIPCIATED="stipciated";
        String stipciated;
    
        ArrayList<HashMap<String, String>> listadvertise = new ArrayList<HashMap<String,String>>();
        ArrayList<HashMap<String, String>> listadvertise1 = new ArrayList<HashMap<String,String>>();
        ArrayList<HashMap<String, String>> listadvertise2 = new ArrayList<HashMap<String,String>>();
        // Webservice parameter for home advertise
        String url;
        String fbid;
        String latitude;
        String longitude;
        String passdistance;
        String offset;
    
        // Webservice parameter for stipciated advertise
    
        String userid;
        String stipciate;
    
        int screenheight;
        int screenwidth;
        AlertDialog alertDialog;
        private ProgressDialog progressDialog;
        ImageView imagemenu;
        ScrollView scrollView3;
    
    
        private ListView listViewLeft;
        private ListView listViewRight;
    
        int[] leftViewsHeights;
        int[] rightViewsHeights;
    
        ImageView im;
        LinearLayout homelistlayout1;
        LinearLayout homelistlayout2;
         public static final int img=50000;
        @Override
        public void onCreate(Bundle savedInstanceState)
        {
            super.onCreate(savedInstanceState);
            requestWindowFeature(Window.FEATURE_NO_TITLE);
            setContentView(R.layout.test);
    
            alertDialog = new AlertDialog.Builder(this).create();
            DisplayMetrics screensize= new DisplayMetrics();
            getWindowManager().getDefaultDisplay().getMetrics(screensize);
    
            screenheight=screensize.heightPixels;
            screenwidth=screensize.widthPixels;
    
            Log.e("Screen Height","---->"+screenheight);
            Log.e("Screen Width ","---->"+screenwidth);
    
            RelativeLayout headerlLayout = (RelativeLayout)findViewById(R.id.headerlayout);
            headerlLayout.setLayoutParams(new RelativeLayout.LayoutParams(LayoutParams.FILL_PARENT,((screenwidth*8)/100)+10));
    
            if(CheckConnection.getInstance(this).isOnline(this))
            {
    
            //  new HomeAsyncTask().execute("");
            }
            else
            {
                alert();
            }
    
            imagemenu=(ImageView)findViewById(R.id.imagemenu);
            imagemenu.setOnClickListener(new OnClickListener() 
            {
                public void onClick(View v)
                {
                        Intent i = new Intent(TestActivity.this,HorizontalActivity.class);
                        startActivity(i);
                }
            });
    
          scrollView3=(ScrollView)findViewById(R.id.scrollview3);
            scrollView3.post(new Runnable() {
                public void run()
                {
                    scrollView3.scrollTo(0, 200);
                }
            });
    
            homelistlayout1=(LinearLayout)findViewById(R.id.homelistlayout1);
            homelistlayout1.setPadding(0, 100, 0, 0);
            homelistlayout2=(LinearLayout)findViewById(R.id.homelistlayout2);
    
            for(int i=0;i<12;i++)
            {
                im= new ImageView(TestActivity.this);
                im.setLayoutParams(new LinearLayout.LayoutParams(200, 200));
                im.setOnClickListener(this); 
                if(i%2==0)
                {
                        im.setImageResource(R.drawable.adv);
                        im.setId(i);
                        homelistlayout1=(LinearLayout)findViewById(R.id.homelistlayout1);
                        homelistlayout1.addView(im);
                }
                else
                {
                    im.setImageResource(R.drawable.adv2);
                    im.setId(i);
                    homelistlayout2=(LinearLayout)findViewById(R.id.homelistlayout2);
                    homelistlayout2.addView(im);
                }
            }   
           }
       }
    
    @Override
    public void onClick(View v) {
      Log.e("Clicked","----->"+v.getId());
      switch (v.getId()) 
       {
        case 1:
            Log.e("Clicked","----->"+v.getId());
            break;
        case 2:
            break;
        .
        .
        .
        default:
        break;
     }
    }
    

    【讨论】:

    • 是的,你是对的,这是一个小错误,谢谢你坚持下去也放弃你
    • 啊,我对你的名字感到困惑... start android 还是 Android Department ? :)
    • android部门和android都启动
    • 嘿,如果创建了新的图像视图,可以在滚动视图的顶部添加新的图像视图
    【解决方案2】:

    您可以在创建视图时setId(),然后这是他的 ID。 http://developer.android.com/reference/android/view/View.html#setId(int)

    【讨论】:

      【解决方案3】:

      您正在使用im.setId(i); 设置ImageView 的ID。所以 ID 将是 i 的值。你可以在某个地方跟踪它。

      另外,请只发布相关的代码,而不是整个课程

      【讨论】:

        猜你喜欢
        • 2015-02-12
        • 2021-02-20
        • 2011-12-21
        • 2013-02-06
        • 2017-06-09
        • 2017-06-09
        • 1970-01-01
        • 1970-01-01
        • 2016-02-02
        相关资源
        最近更新 更多