我有一个 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/