在listview中显示数据

时间:2015-01-19 08:54:14

标签: android android-layout

我正在尝试设计一个列表视图,其中我必须为每列的行显示两到三个数据,但我无法这样做,我得到的数据已经在图像中但是我希望显示在图像b,我只能在每列的每一行显示单个数据。例如,列表示显示项目编号和样式编号的值,我只能显示项目编号而不能显示样式编号。

enter image description here

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


    <TextView
        android:id="@+id/textView1"
        android:layout_gravity="center"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="25dp"
        android:text="TextView" />

    <TextView
        android:id="@+id/textView2"
        android:layout_gravity="center"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="10dp"
        android:textSize="25dp"
        android:text="TextView" />

    <TextView
        android:id="@+id/textView3"
        android:layout_gravity="center"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="10dp"
        android:textSize="25dp"
        android:text="TextView" />
    <TextView
        android:id="@+id/textView4"
        android:layout_gravity="center"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="10dp"
        android:textSize="25dp"
        android:text="TextView" />
    <TextView
        android:id="@+id/textView5"
        android:layout_gravity="center"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="10dp"
        android:textSize="25dp"
        android:text="TextView" />

</LinearLayout>
**Listview xml** 
  <LinearLayout  android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">

        <ListView android:id="@+id/listView"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1"
            android:divider="#00000000"
            android:dividerHeight="5dp"
           />
</LinearLayout>

适配器

public class CustomAdapter extends BaseAdapter{
    String [] result;
    String [] result1;
    String [] result2;
    String [] result3;
    String [] result4;
    Context context;
    int [] imageId;
    private static LayoutInflater inflater=null;
    public CustomAdapter(ItemActivity mainActivity, String[] prgmNameList,String[] prgmNameList1,String[] prgmNameList2,String[] prgmNameList3,String[] prgmNameList4) {
        // TODO Auto-generated constructor stub
        result=prgmNameList;
        result1=prgmNameList1;
        result2=prgmNameList2;
        result3=prgmNameList3;
        result4=prgmNameList4;

        context=mainActivity;

        inflater = ( LayoutInflater )context.
                getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    }



    @Override
    public int getCount() {
        // TODO Auto-generated method stub
        return result.length;
    }

    @Override
    public Object getItem(int position) {
        // TODO Auto-generated method stub
        return position;
    }

    @Override
    public long getItemId(int position) {
        // TODO Auto-generated method stub
        return position;
    }

    public class Holder
    {
        TextView tv;
        TextView tv1;
        TextView tv2;
        TextView tv3;
        TextView tv4;
    }
    @Override
    public View getView(final int position, View convertView, ViewGroup parent) {
        // TODO Auto-generated method stub
        Holder holder=new Holder();
        View rowView;
        rowView = inflater.inflate(R.layout.tabitem, null);
        holder.tv=(TextView) rowView.findViewById(R.id.textView1);
        holder.tv1=(TextView)rowView.findViewById(R.id.textView2);
        holder.tv2=(TextView) rowView.findViewById(R.id.textView3);
        holder.tv3=(TextView) rowView.findViewById(R.id.textView4);
        holder.tv4=(TextView) rowView.findViewById(R.id.textView5);
        holder.tv.setText(result[position]);
        holder.tv1.setText(result1[position]);
        holder.tv2.setText(result2[position]);
        holder.tv3.setText(result3[position]);
        holder.tv4.setText(result4[position]);
        rowView.setBackgroundColor(Color.parseColor("#F1F1FF"));

        rowView.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                Toast.makeText(context, "You Clicked "+result[position], Toast.LENGTH_LONG).show();
            }
        });
        return rowView;
    }

}

从活动中调用

 public static String [] prgmNameList={"123456","456665","123445","5675343"};
    public static String [] prgmNameList1={"15.56","15.562","15.67","15.455"};
    public static String [] prgmNameList2={"9999","9999","9999","9999"};
    public static String [] prgmNameList3={"99%","99%","99%","99%"};
    public static String [] prgmNameList4={"9999","9999","9999","9999"};


    @Override
    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);

        setContentView(R.layout.itemlist);

        getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE,R.layout.item);
        context=this;

        lv=(ListView) findViewById(R.id.listView);
        lv.setAdapter(new CustomAdapter(this, prgmNameList,prgmNameList1,prgmNameList2,prgmNameList3,prgmNameList4));
    }

3 个答案:

答案 0 :(得分:0)

您需要为行项创建自定义布局,您可以将两个文本视图一个放在另一个下方,以根据需要显示数据。然后覆盖适配器的getView()方法并对此自定义布局进行膨胀,并使用数组/列表中的数据填充它。

请参阅giacavicchioli答案中提到的链接中的getView()方法。

答案 1 :(得分:0)

正如user87049所说,这将解决你的问题莎拉:

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


<TextView
    android:id="@+id/textView1"
    android:layout_gravity="center"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_weight="1"
    android:textSize="25dp"
    android:text="TextView" />

<TextView
    android:id="@+id/textView2"
    android:layout_gravity="center"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_weight="1"
    android:layout_marginLeft="2dp"
    android:textSize="25dp"
    android:text="TextView" />

<TextView
    android:id="@+id/textView3"
    android:layout_gravity="center"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_weight="1"
    android:layout_marginLeft="2dp"
    android:textSize="25dp"
    android:text="TextView" />
<TextView
    android:id="@+id/textView4"
    android:layout_gravity="center"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_weight="1"
    android:layout_marginLeft="2dp"
    android:textSize="25dp"
    android:text="TextView" />
<TextView
    android:id="@+id/textView5"
    android:layout_gravity="center"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_weight="1" 
    android:layout_marginLeft="2dp"
    android:textSize="25dp"
    android:text="TextView" />

</LinearLayout>

告诉我这是不是你想要的:) 啊,既然我这些天有点忙,我可能不会在stackoverflow上来这个帐户,请给我发电子邮件以引起我的注意[erfan.molaei@gmail.com]

答案 2 :(得分:0)

这就是我所做的。制作一个像这样的xml文件:

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

    <LinearLayout
        android:layout_width="100dp"
        android:layout_height="match_parent"
        android:orientation="vertical"
        >

        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="#FF0000" />

        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="#00FF00" />

        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="#0000FF" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="100dp"
        android:layout_height="match_parent"
        android:layout_marginLeft="10dp"
        android:orientation="vertical">

        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="#FF0000" />

        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="#00FF00" />

        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="#0000FF" />
    </LinearLayout>
    <LinearLayout
        android:layout_width="100dp"
        android:layout_height="match_parent"
        android:layout_marginLeft="10dp"
        android:orientation="vertical">

        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="#FF0000" />

        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="#00FF00" />

        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="#0000FF" />
    </LinearLayout>
    <LinearLayout
        android:layout_width="100dp"
        android:layout_height="match_parent"
        android:layout_marginLeft="10dp"
        android:orientation="vertical">

        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="#FF0000" />

        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="#00FF00" />

        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="#0000FF" />
    </LinearLayout>
</LinearLayout>

这是您的自定义listview xml文件。现在,在getView方法setText中,就像对xml文件所做的那样,将所有textview。

查看以下屏幕:

Custom_listview_row