Android Listview показывает только один элемент

У меня есть ListView, где я изменил внешний вид строки, но listview имеет размер одной строки, а не полноэкранный.

list_item.xml:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="vertical" > <TextView android:layout_width="fill_parent" android:layout_height="wrap_content"/> <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" > <TextView android:id="@+id/textView_news_time" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center" android:textColor="#0082A8" /> <TextView android:id="@+id/textView_news_header" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" /> </LinearLayout> 

tab_news.xml:

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="wrap_content" android:layout_height="fill_parent" android:orientation="vertical" > <ListView android:id="@+id/list_news" android:layout_width="fill_parent" android:layout_height="fill_parent" > </ListView> </LinearLayout> 

Адаптер:

 public class RSSAdapter extends ArrayAdapter<RSSitem> { Context context; int layoutResourceId; ArrayList<RSSitem> data = null; SimpleDateFormat sdf = new SimpleDateFormat("kk:mm "); public RSSAdapter(Context context, int layoutResourceId, ArrayList<RSSitem> data) { super(context, layoutResourceId, data); this.layoutResourceId = layoutResourceId; this.context = context; this.data = data; } @Override public View getView(int position, View convertView, ViewGroup parent) { View row = convertView; NewsHolder holder = null; if(row == null) { LayoutInflater inflater = ((Activity)context).getLayoutInflater(); row = inflater.inflate(layoutResourceId, parent, false); holder = new NewsHolder(); holder.txtTime = (TextView)row.findViewById(R.id.textView_news_time); holder.txtNews = (TextView)row.findViewById(R.id.textView_news_header); row.setTag(holder); } else { holder = (NewsHolder)row.getTag(); } RSSitem item = data.get(position); holder.txtTime.setText(sdf.format(item.getPubDate())); holder.txtNews.setText(item.getTitle()); return row; } static class NewsHolder { TextView txtTime; TextView txtNews; } 

Элементы прокручиваются.

Извините за плохой английский. Спасибо за помощь

Совет @Varun не помог

Я нашел ошибку. Благодарю. Ответ в "ответах")

Solutions Collecting From Web of "Android Listview показывает только один элемент"

Я нашел ошибку. Tab_news был в ScrollView TabHost. Так глупо ошибка (Спасибо за помощь.

Обновление: ListView не должен находиться под ScrollView в xml . Если это так, возникает одна и та же проблема.

В родительском LinearLayout вы используете android:layout_height="fill_parent" Очевидно, что он будет расширяться вертикально.

ИЛИ:

Используйте инструмент monitor , перейдите к средству hierarchy viewer , подробно hierarchy viewer выполняемый макет. Найдите View с проблемой, проверьте его атрибуты / свойства правильно, перейдите к его родительскому представлению и проверьте его, пока не найдете проблему.

Я думаю, что Listview берет только одну запись из ваших данных. Просто убедитесь, что у вас есть все данные, которые вы хотите показать в Listview.

ИЛИ

Проверьте свой list_item.xml, Замените

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="fill_parent" android:layout_height="**wrap_content**" android:orientation="vertical" > 

вместо,

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="fill_parent" android:layout_height="**fill_parent**" android:orientation="vertical" > 

Если вы используете ListView внутри ScrollView, у вас есть эта проблема. И мое решение следующее:

1. Создайте пользовательский список, который не прокручивается

 public class NonScrollListView extends ListView { public NonScrollListView(Context context) { super(context); } public NonScrollListView(Context context, AttributeSet attrs) { super(context, attrs); } public NonScrollListView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); } @Override public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { int heightMeasureSpec_custom = MeasureSpec.makeMeasureSpec( Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST); super.onMeasure(widthMeasureSpec, heightMeasureSpec_custom); ViewGroup.LayoutParams params = getLayoutParams(); params.height = getMeasuredHeight(); } 

}

2. Используйте надстандартный класс для xml-файла

  <xx.xx.NonScrollListView android:id="@+id/lv_nonscroll_list" android:layout_width="match_parent" android:layout_height="wrap_content" > </xx.xx.NonScrollListView> 

Он отлично работал на всех ОС-версиях для меня. Надеюсь, что лучше для вас.