2012-05-14 2 views
2

Я connent в addevent.java с addevent.xml довольствуется ListView, то ListView взять его элемент из другого XML-файла «item.xml»Как найтиViewById создать другой файл 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:orientation="vertical" > 

     <Button 
      android:id="@+id/d" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_alignParentRight="true" 
      android:layout_alignParentTop="true" 
      android:drawablePadding="0dip" 
      android:drawableRight="@drawable/icon_name" /> 

     <EditText 
      android:id="@+id/en" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:layout_alignParentTop="true" 
      android:layout_toLeftOf="@+id/d" > 
     </EditText> 

</LinearLayout> 

теперь мне нужно findviewbyId не из основного файла XML, но форма другой "item.xml"

Я попытался LayoutInflater как это, код, но он не работает:

public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.addevent); 
     myList = (ListView) findViewById(R.id.MyList); 
     myList.setItemsCanFocus(true); 
     myAdapter = new MyAdapter(); 
     myList.setAdapter(myAdapter); 


     final LayoutInflater factory = getLayoutInflater(); 

     final View textEntryView = factory.inflate(R.layout.item, null); 

     tvDisplayDate = (EditText)textEntryView.findViewById(R.id.editd); 
     btnChangeDate=(Button)textEntryView.findViewById(R.id.d); 

любая помощь пожалуйста

ответ

1

Из класса insinde MyAdapter вы можете переопределить метод getView (это тот, который производит рендеринг элементов по запросу).

После рециркуляции/раздувания раскладку для текущего элемента (скажем convertView), вы можете получить доступ всех своих детей, используя метод, называемый findViewById на convertView:

@Override 
    public View getView(int position, View convertView, ViewGroup parent) 
    { 
     // initialize, inflate convertView from your layout if needed; 
     tvDisplayDate = (EditText)convertView.findViewById(R.id.editd); 
     // populate convertView with the item's details 
    } 
+0

convertView отмечен красным, –

+2

@Akashkumar см. отредактированный ответ с полной сигнатурой метода: «convertView» - это второй параметр метода getView внутри реализации «Adapter»; – rekaszeru

+0

Я только что потратил час, разрешив эту ошибку. Единственное, что я пропустил, это вызов findViewById на convertView. Спасибо, что заставило меня понять это! – waseefakhtar

6

Попробуйте View view = LayoutInflater.from(getApplication()).inflate(R.layout.item, null);

Как вы можете видеть, статический от метода() принимает аргумент 1 (Context), и вы получаете LayoutInflater из данного контекста, в вашем случае это будет ваша активностью, где вы хотите, чтобы раздуть View.

Надеюсь, это поможет!