Android,列表项无法显示

时间:2013-02-28 13:01:12

标签: android android-listview adapter

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

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

当我运行应用程序时,我看不到我的列表,但Log显示已调用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

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

2 个答案:

答案 0 :(得分:0)

@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检查是否有任何内存泄漏。

答案 1 :(得分:0)

问题是因为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?