2014-04-03 34 views
11

我开始在android开发中,并且在标题上出现错误。在AdapterView中不支持addView(查看)

这里是我的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; 
     } 
    } 

} 

里面我ContactListFragmentonCreateView()方法,我创建了TextView “Hello World” 的文本。

然后,我试图将该视图添加到我的ViewGroup listContacts。

这里是我的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> 

我在做什么错?

谢谢。

+0

*我在做什么错?* - 你将'TextView'添加到ListView中,这是不允许的。 – Luksprog

+1

@Luksprog,我如何添加一个项目到我的'ListView'? –

回答

7

您正试图将其设置为您的ListView。这是行不通的。尝试设置它的父母。随着意见后像

listContacts.getParent().addView(aux); 

编辑

要将项目添加到您的ListView你需要将它添加到你使用任何列表来填充你的ListView,并呼吁它setAdapter()notifyDataSetChanged()Adapter

您不要将项目添加到您的ListView。您可以将商品添加到您的Adapter并将Adapter设置为ListView

我建议going through this tutorial

和通读彻底文档。

ListView

Adapter

从文档

适配器对象充当一个AdapterView之间的桥梁,该视图的底层数据。适配器提供对数据项的访问。适配器还负责为数据集中的每个项目制作视图。

ListViewAdapterView这里(它可能是一个Spinner或其他类似的东西)

+0

但我想添加一个项目到我的'ListView'。你的榜样我无法完成。 –

+0

“但我想添加一个项目到我的ListView”......这不是你在帖子中说的*根本*。 – codeMagic

+1

我怎么能做到这一点? –

0

使用线性布局,而不是列表视图。

0

把你的列表视图中的线性布局,然后添加在你的线性表的任何视图其不会给错误

<?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> 

相关问题