android如何创建多行列表视图 [英] android how to create a multiline list view

查看:77
本文介绍了android如何创建多行列表视图的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试创建一个列表项目,该列表项目由彼此之上的两个列表项目组成.我正在使用的代码是这样的:

I am trying to create a list item which consists of two list item on above the other. The code I am using is this:

package com.example.list2;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.widget.ListView;

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ListView lv1=(ListView)findViewById(R.id.listView1);
        Level data[] = new Level[]
                {
                new Level("Heading 1", "Subheading 1"),
                new Level("Heading 2", "Subheading 2"),
                new Level("Heading 3", "Subheading 3")
                };
        LevelAdapter adp=new LevelAdapter(this, R.layout.list_item, data);
        lv1.setAdapter(adp);


    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

}

level.java文件是这样:

the level.java file is this:

package com.example.list2;

public class Level {
    //public int icon;
    public String title;
    public String title2;

    public Level()
    {
        super();
    }

    public Level(String title,String title2) {
        super();
        //this.icon = icon;
        this.title = title;
        this.title2=title2;
    }

}

水平适配器是这个

package com.example.list2;

import android.app.Activity;
import android.content.Context;
import android.graphics.Typeface;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.TextView;

public class LevelAdapter extends ArrayAdapter<Level> {

     static Context context;
        static int layoutResourceId;   
         Level data[] = null;

     public LevelAdapter(Context context, int layoutResourceId, Level[] data) {
            super(context, layoutResourceId, data);
            this.layoutResourceId = layoutResourceId;
            this.context = context;
            this.data = data;
        }


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

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            View row = convertView;
            WeatherHolder holder = null;

            if(row == null)
            {
                LayoutInflater inflater = ((Activity)context).getLayoutInflater();
                row = inflater.inflate(layoutResourceId, parent, false);
               //row.setMinimumHeight(200);
                holder = new WeatherHolder();
              // holder.imgIcon = (ImageView)row.findViewById(R.id.imgIcon);
                holder.txtTitle = (TextView)row.findViewById(R.id.txtTitle);
                holder.txtTitle2 = (TextView)row.findViewById(R.id.txtTitle2);

                row.setTag(holder);
            }
            else
            {
                holder = (WeatherHolder)row.getTag();
            }

            Level weather = data[position];
            holder.txtTitle.setText(weather.title);
        //    holder.imgIcon.setImageResource(weather.icon);

            return row;
        }

        static class WeatherHolder
        {
         //   ImageView imgIcon;
            TextView txtTitle;
            TextView txtTitle2;
        //    ImageView imgIcon2;
        }

}

列表项的布局是这个

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:padding="10dp">



     <TextView android:id="@+id/txtTitle"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:gravity="center_vertical"
        android:textStyle="bold"
        android:textSize="22sp"
        android:layout_marginTop="5dp"
        android:layout_marginBottom="5dp" 
        android:padding="50dip"
        android:textColor="#736F6E"
        android:layout_alignParentLeft="true"
        android:textAppearance="@android:attr/textAppearanceLarge"
       />
     <TextView 
         android:id="@+id/txtTitle2"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:gravity="center_vertical"
        android:layout_below="@id/txtTitle"
        android:textStyle="bold"
        android:textSize="12sp"
        android:layout_marginTop="5dp"
        android:layout_marginBottom="5dp" 
        android:padding="50dip"
        android:textColor="#736F6E"
        android:layout_alignParentLeft="true"
        android:textAppearance="@android:attr/textAppearanceLarge"
         />

</RelativeLayout>

最后,主要活动的布局是

and finally the layout for the main activity is this

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    >


    <ListView
        android:id="@+id/listView1"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_marginLeft="16dp"
        android:layout_marginRight="16dp"
        android:dividerHeight="1dp"

         />

</RelativeLayout>

在输出中,我得到的只是一个列表项,该列表项的高度很大,但是只有 显示标题,而不显示子标题.我要去哪里错了? 谢谢

In the output, all i get is a list item which has a very large height, but only the headings get displayed and not the subheadings. Where am i going wrong? Thanks

推荐答案

好吧,我将列表项XML的范围缩小到:

Well, I narrowed the list item XML dimensions to:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:padding="10dp" >

    <TextView
        android:id="@+id/txtTitle"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_marginBottom="2dp"
        android:layout_marginTop="2dp"
        android:gravity="center_vertical"
        android:padding="2dip"
        android:textAppearance="@android:attr/textAppearanceLarge"
        android:textColor="#736F6E"
        android:textSize="22sp"
        android:textStyle="bold" />

    <TextView
        android:id="@+id/txtTitle2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_below="@id/txtTitle"
        android:layout_marginBottom="2dp"
        android:layout_marginTop="2dp"
        android:gravity="center_vertical"
        android:padding="2dip"
        android:textAppearance="@android:attr/textAppearanceLarge"
        android:textColor="#736F6E"
        android:textSize="12sp"
        android:textStyle="bold" />

</RelativeLayout>

return row之前的

LevelAdapter#getView中,我添加了:holder.txtTitle2.setText(weather.title2);

and in LevelAdapter#getView, just before return row I've added: holder.txtTitle2.setText(weather.title2);

结果在图像文件下面:

The result is below image file:

这是您要实现的目标吗?我没有提到从LevelAdapter中删除static字段的其他改进.

Is that what you're trying to achieve? I am not mentioning other improvements as removing static fields from LevelAdapter.

这篇关于android如何创建多行列表视图的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆