2014-04-03 18 views
11

Sto iniziando nello sviluppo di Android e sto ricevendo quell'errore sul titolo.addView (Visualizza) non è supportato in AdapterView

Ecco il mio Contacts.java

package us.inevent.toot; 

import android.os.Bundle; 
import android.support.v4.app.Fragment; 
import android.support.v7.app.ActionBarActivity; 
import android.view.LayoutInflater; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.TextView; 

public class Contacts extends ActionBarActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_contacts); 

     if (savedInstanceState == null) { 
      getSupportFragmentManager().beginTransaction() 
        .add(R.id.container, new ContactListFragment()).commit(); 
     } 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 

     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.contacts, menu); 
     return true; 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     // Handle action bar item clicks here. The action bar will 
     // automatically handle clicks on the Home/Up button, so long 
     // as you specify a parent activity in AndroidManifest.xml. 
     int id = item.getItemId(); 
     if (id == R.id.action_settings) { 
      return true; 
     } 
     return super.onOptionsItemSelected(item); 
    } 

    /** 
    * A placeholder fragment containing a simple view. 
    */ 
    public static class ContactListFragment extends Fragment { 

     private ViewGroup listContacts; 

     public ContactListFragment() { 
     } 

     @Override 
     public View onCreateView(LayoutInflater inflater, ViewGroup container, 
       Bundle savedInstanceState) 
     { 

      View rootView = inflater.inflate(R.layout.fragment_contacts, 
        container, false); 

      listContacts = (ViewGroup) rootView.findViewById(R.id.listContacts); 

      TextView aux = new TextView(getActivity()); 

      aux.setText("Hello World!"); 

      listContacts.addView(aux); 

      return rootView; 
     } 
    } 

} 

All'interno del metodo della mia ContactListFragmentonCreateView(), Sto creando un TextView con "Ciao Mondo" come testo.

Quindi, sto cercando di aggiungere quella vista al mio elenco ViewGroup.

Ecco il mio fragment_contacts.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    tools:context="us.inevent.toot.Contacts$PlaceholderFragment" > 

    <TextView 
     android:id="@+id/textContact" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentTop="true" 
     android:layout_centerHorizontal="true" 
     android:layout_marginTop="0dp" 
     android:text="@string/textContact" 
     android:textSize="@dimen/abc_action_bar_title_text_size" /> 

    <ListView 
     android:id="@+id/listContacts" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_below="@+id/textContact" 
     android:layout_marginTop="10dp" /> 

</RelativeLayout> 

Che cosa sto facendo di sbagliato?

Grazie.

+0

* Che cosa sto facendo di sbagliato * -? Sei aggiungendo un 'TextView' ad un' ListView' che non è permesso nel modo normale. – Luksprog

+1

@Luksprog, come posso aggiungere un elemento al mio 'ListView'? –

risposta

7

Si sta tentando di impostarlo sul proprio ListView. Non funzionerà. Prova a impostarlo sul suo genitore. Con qualcosa come

listContacts.getParent().addView(aux); 

Modifica dopo i commenti

Per aggiungere un articolo al ListView è necessario aggiungerlo a qualsiasi lista si utilizza per popolare il ListView e chiamare setAdapter() su di esso o notifyDataSetChanged() sul tuo Adapter .

Non aggiungere articoli al numero ListView. Aggiungi elementi al tuo Adapter e imposta Adapter su ListView.

suggerisco going through this tutorial

e la lettura attraverso la documentazione accuratamente.

ListView

Adapter

Dalla documentazione oggetti atti

un adattatore come un ponte tra un AdapterView ei dati sottostanti per tale vista. L'adattatore fornisce l'accesso agli elementi di dati. L'adattatore è anche responsabile della creazione di una vista per ciascun elemento nel set di dati.

tuo ListView è il AdapterView qui (potrebbe essere un Spinner o altre cose del genere)

+0

Ma voglio aggiungere un elemento al mio 'ListView'. Non posso farlo con il tuo esempio. –

+0

"Ma voglio aggiungere un elemento al mio ListView" ... non è quello che hai detto nel tuo post * affatto *. – codeMagic

+1

come potrei realizzare quello? –

0

Usa layout lineare, invece di lista View.

0

Metti la tua lista Visualizza in Layout lineare e quindi aggiungere qualsiasi vista nella vostra lista lineare la sua non intenzione di dare l'errore

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="wrap_content" 
android:layout_height="match_parent" 
android:id="@+id/llist" 
tools:context="com.android.parteek.contentprovider.Main2Activity"> 

    <android.support.v7.widget.SearchView 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:id="@+id/serch" /> 


< ListView 
    android:id="@+id/list" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    tools:context="com.android. parteek.contentprovider.Main2Activity"> 

</ListView> 

Problemi correlati