在布局中多次使用相同的视图

时间:2012-06-04 06:43:22

标签: android android-layout android-listview

我有Activity,其中还有一个ListView。我在EditText方法中向ListView加载了一些getView框,按钮等。

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);    
            }

在多个实例中,我还在同一个Button添加List。基本上,我只是根据ListView的行索引将特定的布局文件加载到特定的行。该按钮的标识为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>

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

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

2 个答案:

答案 0 :(得分:2)

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

EGS:

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

注意findViewById用于convertView ...

答案 1 :(得分:1)

以下是更改视图ID的方法

Button button = context.findViewById(R.whatever.button);
button.setId();// <-- put the new id as the param

注意:请确保您没有任何冲突的内容!