2016-01-22 173 views
1

这可能是twick我失踪,请协助Android的ListView控件:不能看到一个简单的列表

我已经创建一个简单的列表,并将其绑定到一个适配器

,但由于某种原因,在设备上运行时,不显示

这是我遇到的所有教程对准

fragment_main.xml:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 

xmlns:tools="http://schemas.android.com/tools" 
android:paddingTop="4dip" 
android:paddingBottom="6dip" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:textSize="13sp" 
android:weightSum="1.0" 
android:orientation="horizontal" 
tools:showIn="@layout/activity_main"> 

<TextView android:id="@+id/singName" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:gravity="center" 
    android:text="LOGO" 
    android:layout_gravity="top" 
    android:layout_alignParentTop="true" 
    android:layout_centerHorizontal="true" 
    android:textSize="40dp" 
    android:textAppearance="?android:attr/textAppearanceLarge" /> 

<ListView 
    android:layout_width="280dp" 
    android:layout_height="match_parent" 
    android:id="@+id/messagesList" 
    android:layout_gravity="center_vertical|left" 
    android:visibility="visible" 
    android:layout_above="@+id/bottomTxt" 
    android:layout_alignParentStart="true" 
    android:layout_below="@+id/singName" /> 

的Java:

public class MainActivityFragment extends Fragment { 

public MainActivityFragment() { 
} 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
    View rootView = inflater.inflate(R.layout.fragment_main, container, false); 
    ListView lv = (ListView) rootView.findViewById(R.id.messagesList); 

    String [] messages = new String[]{ 
      "Item 1", 
      "Item 2", 
      "Item 3", 
      "Item 4" 
    }; 


    ArrayAdapter<String> adapter; 
    adapter = new ArrayAdapter<>(
      getActivity(), 
      R.layout.message_item, 
      messages); 

    lv.setAdapter(adapter); 
    return rootView; 
} 

message_item.xml:

<?xml version="1.0" encoding="utf-8"?> 
<TextView 
xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="50dp" 
android:layout_height="50dp" 
android:minHeight="?android:listPreferredItemHeightLarge" 
android:gravity="center_vertical" 
android:textSize="20dp" 
android:id="@+id/message_item_text"> 
</TextView> 
+0

“fragment.xml”真的名为'fragment_main.xml',就像你正在膨胀的那个? – mikeorr85

+0

是的,它是fragment_main.xml – HaimS8

回答

1

你的第一个问题是,你吹气fragment_main.xml两次。你必须解决这个问题,并返回第一个视图。除此之外,它有什么问题会崩溃或什么?

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
    View rootView = inflater.inflate(R.layout.fragment_main, container, false); 
    ListView lv = (ListView) rootView.findViewById(R.id.messagesList); 

    String [] messages = new String[]{ 
      "Item 1", 
      "Item 2", 
      "Item 3", 
      "Item 4" 
    }; 


    ArrayAdapter<String> adapter; 
    adapter = new ArrayAdapter<>(
      getActivity(), 
      R.layout.message_item, 
      messages); 

    lv.setAdapter(adapter); 
    return rootView; 
} 

你发布你的fragment.xml文件,但会人为增加fragment_main.xml文件。

+0

感谢 我已经解决了重复但这不是问题 只需在列表中不显示 - 不崩溃 我已经找到了问题 - 我应该设置onActivityCreated方法适配器代替的onCreateView因为我正在使用片段 – HaimS8

+0

是的,这是问题之一。您正在设置您未使用的布局的ListView。现在你可以更新你的代码和问题了,什么是问题或者是否有任何错误。 – Sharj

+0

@ HaimS8你应该给Sharj一些功劳,因为这是你原来的代码中的一个重大错误,可能是你的问题的原因。单独将适配器移动到'onAcitivtyCreated'并不真正解决您的问题,因此不需要将它设置在那里。 –

相关问题