简体   繁体   中英

Android ListView : can't see a simple list

This is probably twick I'm missing, pls assist

I've create a simple list and bind it to an adapter

but for some reason It ain't showing when running on device

this is align with all tutorials I've come across with

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>

Your first problem is that you inflater fragment_main.xml twice. You have to fix that and return the first View. Other than that what's the problem does it crash or what?

@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;
} 

You posted your fragment.xml file but you are inflating fragment_main.xml file.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM