2013-11-11 2 views
0

Класс является расширением другого класса и имеет ошибку при запуске списка. Может кто-нибудь мне помочь? Макет: GridLayoutError ListView in findViewById

XML:

<ListView 
    android:id="@+id/lvContexts" 
    android:layout_width="899dp" 
    android:layout_height="356dp" 
    android:layout_column="1" 
    android:layout_columnSpan="3" 
    android:layout_gravity="left" 
    android:layout_row="3" 
    android:layout_rowSpan="2" > 
</ListView> 

Класс:

public class EditarContext extends Iniciar { 
    .... 

    lvContext = (ListView) findViewById(R.id.lvContexts); 
ArrayList<String> lvList = (ArrayList<String>) contexts; 
ArrayAdapter<String> spArrayAdapter = new ArrayAdapter<String>(this, 
     android.R.layout.simple_list_item_1, lvList); 
lvContext.setAdapter(spArrayAdapter); 
lvContext.setClickable(true); 
lvContext.setVisibility(View.VISIBLE); 
lvContext.setVisibility(View.GONE); 
} 

РЕК: Содержимое ListView в настоящее время выбрал кок контента.

Ошибки эти, но я не пропустите ни одного из них: http://i.stack.imgur.com/Gdsdt.png

+0

Можете ли вы опубликовать NPE из LogCat? – Hendy

+0

Опубликовать logcat. – blitzen12

+0

не компилирует – Suh

ответ

0

Для использования findViewByID вы должны расширить свою деятельность. Если нет, вам нужно создать экземпляр своей деятельности, передав ее как параметр конструктору.

EditarContext instance = new EditarContext(this); 

.. 

public class EditarContext extends Iniciar { 

public Activity activity; 
//.... other attributes 

public EditarContext(Activity _activity){ 

    this.activity = _activity; 
//other initializations... 

} 
} 

Затем вы можете использовать findViewById так:

lvContext = (ListView)this.activity.findViewById(R.id.lvContexts); 

Надеются, что это помогает.

+0

Именно это! Благодаря! – Suh

0

попробовать это:

public class YourActivity extends Activity 
{ 
    private ListView lvContext; 

    public void onCreate(Bundle saveInstanceState) { 
     setContentView(R.layout.your_layout); 

     lvContext = (ListView) findViewById(R.id.your_list_view_id); 
     // Instanciating an array list 
     ArrayList<String> lvList = new ArrayList<String>(); 
     lvList.add("foo"); 
     lvList.add("bar"); 

     // This is the array adapter, it takes the context of the activity as a first // parameter, the type of list view as a second parameter and your array as a third parameter 
     ArrayAdapter<String> spArrayAdapter =  
     new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, lvList); 

     lvContext.setAdapter(spArrayAdapter); 
} 

}

+0

Я создал метод и поместил его внутри. Так оно и работало. Требуются только корректировки. Спасибо за помощь. : D – Suh

0
// try this 
View view = LayoutInflater.from(MyActivity.this).inflate(R.layout.XML,null,false); 
lvContext = (ListView) view.findViewById(R.id.lvContexts);