与ListView的每一行中的TextView交互

时间:2016-02-25 07:29:03

标签: android listview

我有一个列表视图,每行有两个项目是两个TextView。

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">
    <LinearLayout
        android:id="@+id/content"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:orientation="vertical">

        <TextView
            android:id="@+id/txtInfo"
            android:layout_width="wrap_content"
            android:layout_height="30sp"
            android:layout_gravity="right"
            android:textSize="12sp"
            android:visibility="gone"
            android:textColor="@android:color/darker_gray" />

        <LinearLayout
            android:id="@+id/contentWithBackground"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="right"
            android:background="@drawable/my_textview_border"
            android:paddingLeft="10dp"
            android:paddingBottom="10dp"
            android:orientation="vertical">

            <TextView
                android:id="@+id/txtMessage"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textColor="@android:color/black"
                android:padding="10dp"
                android:maxWidth="240dp" />

        </LinearLayout>

    </LinearLayout>
</RelativeLayout>

现在我想在我用onItemClick(AdapterView<?> parent, View view, int position, long id)方法单击的行上显示隐藏的TextView,但是如何为每个TextView设置详细ID。我的意思是TextView在我触摸的行中只是可见,而不是在其他行中的所有TextView。

1 个答案:

答案 0 :(得分:1)

  1. Activity
  2. 扩展您的课程implements OnItemClickListener
  3. yourList.setOnItemClickListener(this);
  4. 中使用onCreate()
  5. 使用以下方式覆盖onItemClick
  6. s

    @Override
        public void onItemClick(AdapterView<?> parent, View view, int position,
                long id) {
            TextView tv = (TextView) view.findViewById(R.id.txtMessage);
            tv.setVisibility(View.VISIBLE);
        }
    
    1. 不要忘记覆盖您的getView() arrayAdapter方法:
    2.  public View getView(int position, View convertView, ViewGroup list) {
      View element;
                      if (convertView == null) {
                          element = View.inflate(ctx, R.layout.yourlayout, null);
                      } else {
                          element = convertView;
                      }
      ///setup your listview element
      return element;
      }
      

      修改

      更改textview的所有数据我将以这种方式工作: yourarrayadater.setupmydata(); yourarrayadater.notifyDataSetChanged()

      之后,arrayadapter将使用getView重绘。 所以,再次使用

       public View getView(int position, View convertView, ViewGroup list) {
          View element;
                          if (convertView == null) {
                              element = View.inflate(ctx, R.layout.yourlayout, null);
                          } else {
                              element = convertView;
                          }
      
      TextView tv = (TextView) element.findViewById(R.id.txtMessage);
          ///SETUP YOUR tv for each row
          return element;
          }