【问题标题】:Android, List items cannot be displayedAndroid,无法显示列表项
【发布时间】:2013-02-28 13:01:11
【问题描述】:

在我的片段中,我有一个列表。我想在我的列表中显示数据。 这是适配器类:

@Override
    public int getCount() {
        10;
    }

    @Override
    public Object getItem(int position) {
        return null;
    }

    @Override
    public long getItemId(int position) {
        return position;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        ViewHolder holder;
        Log.e(TAG, "---");
        if (convertView == null) {
            convertView = myInflater.inflate(R.layout.list_topicslist, null);
            holder      = new ViewHolder();

            holder.tvTitle          = (TextView)        convertView.findViewById(R.id.tvTitle);
            holder.tvExcerpt        = (TextView)        convertView.findViewById(R.id.tvExcerpt);
            holder.tvDate           = (TextView)        convertView.findViewById(R.id.tvDate);
            holder.tvAuthor         = (TextView)        convertView.findViewById(R.id.tvAuthor);
            holder.tvComment_Count  = (TextView)        convertView.findViewById(R.id.tvComment_Count);

            convertView.setTag(holder);
        } else {
            holder = (ViewHolder) convertView.getTag();
        }

        holder.tvTitle.setText("Title");
        holder.tvExcerpt.setText("Content");
        holder.tvAuthor.setText("Hesam");
        holder.tvComment_Count.setText("Votes:");
        holder.tvDate.setText("1/1/2013");

        return convertView;
    }

这是 list_topicslist.xml:

<?xml version="1.0" encoding="utf-8"?>

<RelativeLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/rlContainer"
        android:background="@color/White" >


    <RelativeLayout
            android:id="@+id/rlHeader"
            android:orientation="vertical"
            android:layout_width="match_parent"
            android:layout_height="25dp" android:layout_alignParentLeft="true"
            android:layout_alignParentTop="true" android:background="@color/bg_list_title">
        <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="@string/title_author"
                android:id="@+id/tvAuthor" android:layout_alignParentRight="true" android:layout_centerVertical="true"
                android:layout_margin="@dimen/sideMargin" android:lines="1" android:maxLines="1"/>
        <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="@string/title_date"
                android:id="@+id/tvDate" android:layout_alignParentLeft="true"
                android:layout_margin="@dimen/sideMargin" android:maxLines="1"
                android:lines="1" android:layout_centerVertical="true"/>
    </RelativeLayout>

    <RelativeLayout
            android:id="@+id/rlBody"
            android:orientation="vertical"
            android:layout_width="match_parent"
            android:layout_height="100dp"
            android:layout_below="@id/rlHeader" android:clickable="false">

        <ImageView
                android:layout_width="100dp"
                android:layout_height="100dp"
                android:id="@+id/ivPostImage" android:layout_alignParentRight="true"
                android:layout_alignParentTop="true" android:layout_margin="@dimen/sideMargin"
                android:src="@drawable/ic_loading_green"/>
        <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="@string/title_title"
                android:id="@+id/tvTitle" android:layout_toLeftOf="@+id/ivPostImage"
                android:layout_alignTop="@+id/ivPostImage" android:layout_margin="@dimen/sideMargin" android:lines="1"
                android:maxLines="3"/>
        <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="@string/title_excerpt"
                android:id="@+id/tvExcerpt" android:layout_toLeftOf="@+id/ivPostImage"
                android:layout_below="@+id/tvTitle" android:layout_margin="@dimen/sideMargin" android:lines="1"
                android:maxLines="6"/>
    </RelativeLayout>

    <RelativeLayout
            android:id="@+id/rlFooter"
            android:orientation="vertical"
            android:layout_width="match_parent"
            android:layout_height="25dp"
            android:layout_below="@id/rlBody"
            android:background="@color/bg_list_footer">
        <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="@string/title_comment_count"
                android:id="@+id/tvComment_Count" android:layout_alignParentRight="true"
                android:layout_alignParentTop="true" android:layout_margin="@dimen/sideMargin"
                android:layout_centerVertical="true" android:lines="1" android:maxLines="1"/>
    </RelativeLayout>

</RelativeLayout>

这是片段的xml:

<?xml version="1.0" encoding="utf-8"?>

<RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools" >

    <ListView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/lvTopicsList"
            android:scrollbars="none"
            android:scrollingCache="false"
            tools:listitem="@layout/list_topicslist" />
</RelativeLayout>

当我运行应用程序时,我看不到我的列表,但日志显示 getView() 已被调用。

02-28 21:09:10.195: E/*** TopicAdapter ***(16184): ---
02-28 21:09:10.220: D/dalvikvm(16184): GC_CONCURRENT freed 2720K, 33% free 11321K/16775K, paused 2ms+1ms
02-28 21:09:10.235: E/*** TopicAdapter ***(16184): ---
02-28 21:09:10.235: E/*** TopicAdapter ***(16184): ---
02-28 21:09:10.235: E/*** TopicAdapter ***(16184): ---
02-28 21:09:10.240: E/*** TopicAdapter ***(16184): ---
02-28 21:09:10.240: E/*** TopicAdapter ***(16184): ---
02-28 21:09:10.250: E/*** TopicAdapter ***(16184): ---
02-28 21:09:10.275: E/*** TopicAdapter ***(16184): ---
02-28 21:09:10.295: D/dalvikvm(16184): GC_CONCURRENT freed 262K, 31% free 11693K/16775K, paused 2ms+2ms

我的错误在哪里? 任何建议,将不胜感激。谢谢

【问题讨论】:

  • 能否也显示片段的代码?
  • 谢谢 Ascorbin,它有这么多行代码,浪费你的时间。根据我的调试,一切都很好,我也可以看到 Log.e(TAG, "---");在 log cat 中,它显示 getView() 正在工作。我不知道为什么它不提供数据。数据是硬编码的,所以应该显示出来! :(

标签: android android-listview adapter


【解决方案1】:
@Override
 public Object getItem(int position) {
 return position;// change null to position
 }

在这里观看视频。 http://www.youtube.com/watch?v=wDBM6wVEO70。 要清楚地了解内存管理,请查看此链接http://www.youtube.com/watch?v=_CruQY55HOk

查看类似的问题How to solve GC_concurrent freed?。看起来你的堆已经满了。

以上链接应该可以帮助您找到摆脱困境的方法。使用 MAT Analyzer 检查任何内存泄漏。

【讨论】:

  • 情况并非如此,因为如果我将其更改为任何整数,则没有列表项。我对垃圾收集器持怀疑态度,因为我有太多代码行,垃圾收集器正在清理内存。
  • 如果您的应用程序没有内存可运行,您应该会收到内存不足错误。 Android确实标记和扫描。如果发生垃圾收集,您会在 Logcat 中看到一些消息,例如暂停 GC。
【解决方案2】:

问题是由于 lint 的愚蠢建议,它要求我将 layout_width 设置为 0dp 而不是 match-parent。我在 activity_main.xml 中将我的 xml 活动代码(上面未提及)更改为类似的内容

<?xml version="1.0" encoding="utf-8"?>

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

    <fragment
            android:name="com.kamalan.fragments.Fragment_TopicsList"
            android:id="@+id/fragment"
            android:layout_width="match_parent"   <==================
            android:layout_height="match_parent"
            android:layout_gravity="left|center_vertical" />
</LinearLayout>

现在,应用程序运行良好。


更新

我发现这篇文章很有用:Why is 0dp considered a performance enhancement?

【讨论】:

    猜你喜欢
    • 2016-06-13
    • 1970-01-01
    • 2017-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-07
    • 2016-10-12
    • 1970-01-01
    相关资源
    最近更新 更多