带有textview的可点击图片

时间:2014-04-08 15:45:40

标签: android listview textview imageview android-linearlayout

我想从数据库中动态添加图像和文本视图(图片中的蓝色)。我也希望它是可点击的,并且它可以将它的Id或其他内容传递给下一个活动。我想到了listview,但是eclipse说它不应该在scrollview中。所以我尝试创建线性布局,在其中我尝试放置包含图像和textview的另一个线性布局(不同方向)(所以每行一个线性布局)。我不确定我是否做得好,但它只显示第一张图片和最后一张textview,所以我想这不是正确的方法。

这是布局图: http://pbrd.co/R0JVKs

以下是我添加视图的方式:

//architekti
              llArchitekti = (LinearLayout) findViewById(R.id.architekt_layout);
              LinearLayout llArchitekt;
              ImageView arch_obr;
              TextView tvArchitekt;
              int i = 0;
              for(String architekt : architekti){
                  arch_obr = new ImageView(ObjectInfo.this);
                  if(architekti_obrazky.size()>i && architekti_obrazky.get(i)!="no_image"){
                      arch_obr.setImageBitmap(BitmapFactory.decodeFile(getExternalFilesDir(null)+"/images/thumb/obr_"+architekti_obrazky.get(i)+"_1.jpg"));
                  }else{
                      arch_obr.setImageBitmap(BitmapFactory.decodeFile(getExternalFilesDir(null)+"/images/thumb/no_image.jpg"));
                  }
                  arch_obr.setPadding(8, 8, 20, 8);
                  arch_obr.setLayoutParams(new LayoutParams( 150 , LayoutParams.WRAP_CONTENT));

                  //here starts the adding part
                  llArchitekt = new LinearLayout(ObjectInfo.this);
                  llArchitekt.setOrientation(LinearLayout.VERTICAL);
                  llArchitekt.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT));


                  tvArchitekt = new TextView(ObjectInfo.this);
                  tvArchitekt.setText(architekt);
                  tvArchitekt.setClickable(true);
                  tvArchitekt.setTextSize(22);
                  tvArchitekt.setPadding(8, 8, 20, 8);
                  tvArchitekt.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT));

                  llArchitekt.addView(arch_obr);
                  llArchitekt.addView(tvArchitekt);
                  llArchitekti.addView(llArchitekt);
                  i++;
              }

llArchitekt应该是每行的线性布局,llArchitekti应该是我添加行的线性布局。

llArchitekt - 垂直 llArchitekti - 水平

此外,我不确定是否可以通过点击获取一些ID(最好是来自数据库的ID)。

1 个答案:

答案 0 :(得分:0)

您应该将ListView与自定义适配器一起使用。网上有很多教程:

Custom Listview Tutorial