4

我有一个Activity其中也有一个ListView。我在我的方法中加载了一些EditText框、按钮等。ListViewgetView

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

在多个实例中,我还将 a 添加Button到相同的List. 基本上,我只是根据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>

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

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

4

2 回答 2

2

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

例如:

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

注意 findViewById 用于 convertView...

于 2012-06-04T07:18:03.877 回答
1

这是更改视图ID的方法

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

注意:确保您没有任何冲突的 ID!

于 2012-06-04T06:48:10.390 回答