我一直在阅读simple_list_item_2和其他在列表视图上显示多行文本的标准化方法,但是没有一种方法能满足我的需求。到目前为止,我正在为列表视图使用自定义布局,但是(在阅读多篇文章之后)我缺乏关于如何自定义列表视图中的每一行以显示大行文字,工具提示(小行文字)和图片的知识(在阅读多篇文章之后) 。
这是我用来初始化列表视图并设置适配器的代码
//List View
final String[] itemname = {
"More Rockets",
"Better Lasers",
"Super Shield",
"Super Defense"
};
final String[] itemtip = {
"+1 attack",
"+5 attack ",
"+1 defense",
"+5 defense"
};
final ListView upgradeList = (ListView) findViewById(R.id.upgradeListView);
upgradeList.setAdapter(new ArrayAdapter<String>(
this, R.layout.program_list,
R.id.Itemname, itemname));
program_list.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="80dp"
android:background="@drawable/buttontemplate">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
android:text="Item Name"
android:id="@+id/Itemname"
android:textSize="30sp"
android:layout_centerVertical="true"
android:layout_toEndOf="@+id/imageView"
android:layout_marginLeft="15sp" />
<ImageView
android:layout_width="30sp"
android:layout_height="30sp"
android:id="@+id/imageView"
android:src="@drawable/heart"
android:layout_marginLeft="20dp"
android:layout_alignBottom="@+id/Itemname"
android:layout_alignParentStart="true" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceSmall"
android:text="Tooltip:"
android:id="@+id/toolTip"
android:layout_centerVertical="true"
android:layout_toEndOf="@+id/Itemname"
android:layout_marginLeft="20dp" />
</RelativeLayout>
这是我在列表视图中放置另一行文本的想法,但这不是正确数量的参数
upgradeList.setAdapter(new ArrayAdapter<String>(
this, R.layout.program_list,
R.id.Itemname, itemname, R.id.toolTip, itemtip));
很感谢任何形式的帮助!
-凯尔顿
最佳答案
首先创建一个具有String itemname,String itemtip字段的POGO类,然后生成getter和setter方法,然后从活动类中创建此pogo类的数组列表,即
ArrayList<MyPOGO> arraylist =new ArrayList();
MyPOGO myPogo1=new MyPogo("More Rockets","+1 attack");
MyPOGO myPogo2=new MyPogo("Better Lasers","+5 attack ");
MyPOGO myPogo3=new MyPogo("Super Shield","+1 defense");
MyPOGO myPogo4=new MyPogo("Super Defense", "+5 defense");
arraylist.add(myPogo1);
arraylist.add(myPogo2);
arraylist.add(myPogo3);
arraylist.add(myPogo);
在这里,您的arraylist大小为4。
现在,使baseadapter或recyler视图通过此arraylist