android - 在布局中多次使用相同的 View

标签 android android-layout android-listview

我有一个 Activity,其中也有一个 ListView。我在 getView 方法中将一些 EditText 框、按钮等加载到那个 ListView

if(position==0)
            {
                ((TextView)convertView.findViewById(R.id.textview_settings)).setText("User Information");

            }
            else if(position==1 || position==2 || position==5 || position==6 || position==7 || position==10 || position==13)
            {
                ((LinearLayout)convertView.findViewById(R.id.linear_settings)).setVisibility(View.VISIBLE);
                ((RelativeLayout)convertView.findViewById(R.id.Relative_home)).setVisibility(View.GONE);

                if(position==1 || position==5 || position==5)
                    ((EditText)convertView.findViewById(R.id.edittext_settings)).setBackgroundResource(R.drawable.f_t_1_iphone);
                else if(position==7 || position==2)
                    ((EditText)convertView.findViewById(R.id.edittext_settings)).setBackgroundResource(R.drawable.f_t_3_iphone);
                else if(position==6)
                    ((EditText)convertView.findViewById(R.id.edittext_settings)).setBackgroundResource(R.drawable.f_t_2_repeat_iphone);
                else if(position==13 || position==10)
                    ((EditText)convertView.findViewById(R.id.edittext_settings)).setBackgroundResource(R.drawable.f_t_4_iphone);    
            }

在多个实例中,我还向同一个 List 添加了一个 Button。基本上,我只是根据 ListView 的行索引将特定布局文件加载到特定行。该按钮的 ID button_title - 在我下面的 xml 中定义。

    convertView = mInflater.inflate(R.layout.next, null); *//inside getView method*

next.xml 的内容:

 <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:id="@+id/linear">

    <FrameLayout 
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:id="@+id/frame_settings">

    <RelativeLayout 
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:id="@+id/Relative_home"
    android:orientation="horizontal" >
    <TextView
        android:id="@+id/textview_settings"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center|left"
        android:layout_margin="5dp"
        android:text=""
        android:textSize="15dp"
        android:textStyle="bold"
        android:typeface="sans" android:layout_alignParentLeft="true"/>

     <ImageButton
        android:id="@+id/Button_title"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="left"
        android:layout_marginRight="10dp"
       android:background="@drawable/edit_button_pressed" android:layout_alignParentRight="true"/>
     </RelativeLayout>

     <LinearLayout
        android:id="@+id/linear_settings"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content">       
        <EditText
        android:id="@+id/edittext_settings"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:textSize="12dp"
        android:textStyle="bold"
        android:typeface="sans" android:layout_alignParentLeft="true"/>
        </LinearLayout>
     </FrameLayout>
     </LinearLayout>

现在,由于我在此 Activity 中有同一个按钮的多个实例,我无法为这些按钮中的每一个分配唯一的 ID。从技术上讲,所有按钮现在都拥有相同的 ID。

有什么方法可以为这些按钮中的每一个分配不同的 ID?以编程方式?

最佳答案

您需要在按钮父布局上使用 findViewById 才能更改特定按钮上的 ID。

例如:

convertView = mInflater.inflate(R.layout.next, null);
Button buttonIWantToChangeID = convertView.findViewById(R.whatever.Button_title);
buttonIWantToChangeID.setId(1000+listPosition);

注意 findViewById 用于 convertView...

关于android - 在布局中多次使用相同的 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10877283/

相关文章:

java - Android 可绘制范例!

java - 在 JAVA ANDROID SDK 中动态创建按钮和文本

Android:在 ListAdapter 中设置 TextView 的可见性

android - 将 Listview 移动到 View android 的底部

android - 如何为android开发设置intellij idea

android - 如何管理 list 文件和 list 产品 flavor 的包名称

Android禁用navigationDrawer透明

android - 如何处理 ListView 中的快速连续点击

android - 我怎样才能改变我的安卓应用程序的图标

android - 启动画面的首选方式是什么? - 使用处理程序或创建新线程?