Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 在布局中多次使用相同视图_Android_Android Layout_Android Listview - Fatal编程技术网

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