Android 在布局中多次使用相同视图
我有一个Android 在布局中多次使用相同视图,android,android-layout,android-listview,Android,Android Layout,Android Listview,我有一个活动,其中还有一个列表视图。在我的getView方法中,我正在将一些EditText框、按钮等加载到ListView if(position==0) { ((TextView)convertView.findViewById(R.id.textview_settings)).setText("User Information"); } else if(position==1 || p
活动
,其中还有一个列表视图
。在我的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);
}
在多个实例中,我还将一个按钮添加到同一列表中。基本上,我只是根据列表视图的行索引将特定布局文件加载到特定行。该按钮具有id按钮标题
——在下面的my 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?以编程方式?以下是如何更改视图的id
Button button = context.findViewById(R.whatever.button);
button.setId();// <-- put the new id as the param
Button-Button=context.findviewbyd(R.whatever.Button);
button.setId();// 您需要在按钮父布局上使用findViewById,以便更改特定按钮上的id
Egs:
请注意,findViewById用于convertView…Hi John。这将再次导致更改所有实例的按钮ID。也就是说,无论我在哪里使用过这个按钮,我最终还是会重复使用相同的ID。你能编辑你的问题并使其更详细吗?我很难理解它,它似乎有点模棱两可。意思是你想更改你在custome listview layout next中使用的按钮的id。xmlyes。这就是我打算做的。有什么理由这样做吗?请提供你为什么要这样做,以及你想在这个基础上执行什么操作。etcI有3个编辑文本框,在我为每个编辑文本框单击“编辑”按钮之前,这些编辑文本框是禁用的。一旦我点击“编辑”按钮,编辑文本框将被启用,我将能够编辑它。我正在为每一行重新使用布局。这就是为什么我需要不同的ID。如果您只有3行,那么重用这些行并不会带来太多好处。我只需要创建它自己的每一行,这使它更容易控制和处理,因为您可以在xml文件中为每一项分配一个自定义ID
convertView = mInflater.inflate(R.layout.next, null);
Button buttonIWantToChangeID = convertView.findViewById(R.whatever.Button_title);
buttonIWantToChangeID.setId(1000+listPosition);