【问题标题】:ListView - Start activity if clicked on ImageViewListView - 如果单击 ImageView 则开始活动
【发布时间】:2015-10-27 13:21:42
【问题描述】:

我的 ListView 被这个填充了

<LinearLayout
    android:orientation="horizontal"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_gravity="center">

    <RelativeLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">

        <ImageView
            android:layout_width="70dp"
            android:layout_height="70dp"
            android:id="@+id/projectImage"
            android:maxHeight="70dp"
            android:maxWidth="70dp"
            android:adjustViewBounds="true"
            android:minHeight="50dp"
            android:minWidth="50dp"
            android:layout_alignParentStart="true"
            android:layout_centerVertical="true"
            android:layout_marginLeft="10dp" />

        <LinearLayout
            android:orientation="horizontal"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content">

            <LinearLayout
                android:orientation="vertical"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginLeft="90dp">

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:textAppearance="?android:attr/textAppearanceMedium"
                    android:id="@+id/projectTitle"
                    android:textStyle="bold"
                    android:focusable="false"
                    android:clickable="false"
                    android:textSize="15dp"
                    android:text="projecttitle" />

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:textAppearance="?android:attr/textAppearanceSmall"
                    android:id="@+id/projectTopic"
                    android:focusable="false"
                    android:clickable="false"
                    android:textSize="14sp"
                    android:text="projectTopic"
                    android:layout_marginTop="3dp" />

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:textAppearance="?android:attr/textAppearanceSmall"
                    android:id="@+id/projectdeadline"
                    android:textSize="14sp"
                    android:text="projectdeadline"
                    android:layout_marginTop="3dp" />

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:textAppearance="?android:attr/textAppearanceSmall"
                    android:text="projectTaskCount"
                    android:id="@+id/projectTaskCount"
                    android:layout_marginTop="3dp" />

            </LinearLayout>

        </LinearLayout>

    </RelativeLayout>

</LinearLayout>

它包含一个ImageView 和三个TextViews。 如果我点击ImageView 我想启动我的Activity Example1,否则打开下一个Activity WiFi。

@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

    Intent in = new Intent(this, WiFi.class);

    in.putExtra("projectFileNamesMap", projectFileNamesMap.get(position));
    in.putExtra("position", position);
    in.putExtra("sessionId", sessionId);
    startActivity(in);

}

如何解决我的问题?

总结: 如果我点击 ImageView 打开 Example1 Activity。 如果点击了其他地方,则打开 WiFi Activity。

希望大家能理解。

亲切的问候!

【问题讨论】:

  • 设置一个 Touch Listener 并开始你需要的活动。
  • 不要使用 onItemClick....否则使用适配器中的 imageview onclick
  • 在自定义适配器的 getView 方法中的 ImageView 上实现 OnClickListener。
  • 我在我的自定义适配器中为我的 imageview 实现了 onclicklistener,但是如果我点击 imageview 它会启动这两个活动。
  • @miteshpithadiya 你给了我正确的想法!!!!谢谢!!

标签: android android-layout listview android-listview


【解决方案1】:

在getView方法中使用image.setOnclickListener和view.setOnItemCLickListener来执行图片视图和整个视图的点击。

【讨论】:

    【解决方案2】:

    首先设置你的图像:

    android:clickable="true" //setOnClickListener makes a view clickable if it doesn't have that as a default but use it anyway.
    

    然后:

    imgView.setOnClickListener(new View.OnClickListener() {
       //@Override
       public void onClick(View v) {
          Log.v(TAG, " click");         
       }        
    });
    

    请告诉我这是否有效

    【讨论】:

      【解决方案3】:

      在Adapter的getView方法中为listView的每个ImageView元素创建一个新Instance时为ImageView编写OnClickListener

      还要确保在将 View 添加到 Linearlayout 之前设置适当的 LayoutParams。

      public View getView(final int position, View convertView, ViewGroup parent) {
              TextView txtOne, txtTwo, txtThree;
              ImageView iv;
              LinearLayout layout;
      
              if(convertView == null){
                  layout = new LinearLayout(context);
                  txtOne = new TextView(context);
                  txtTwo = new TextView(context);
                  txtThree = new TextView(context);
                  iv = new ImageView(context);
              } else{
                  layout = (LinearLayout) convertView;
                  txtOne = (TextView) layout.getChildAt(0);
                  txtTwo = (TextView) layout.getChildAt(0);
                  txtThree = (TextView) layout.getChildAt(0);
                  iv = (ImageView) layout.getChildAt(0);
              }
              layout.addView(txtOne);
              layout.addView(txtTwo);
              layout.addView(txtThree);
              layout.addView(iv);
      
              iv.setOnClickListener(new View.OnClickListener() {
                  @Override
                  public void onClick(View view) {
                      //Do your handling here
                  }
              });
      

      }

      【讨论】:

      • 这是一个很好的答案。如果你想在activity中实现监听器,你可以将自定义监听器对象传递给adapter,你可以把这个adapter设置成一个view。
      猜你喜欢
      • 2018-08-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多