----新密码:---- 这个新代码如何使用较小的字体添加额外的行?预期的输出应为:
汉堡包($ 2)
沙拉好牛肉
比萨(3美元)
有很多奶酪
Chicken Nuggets($ 4)
最好的酱汁
@Override
public void onCreate(Bundle savedInstanceState)
{
final ListView listview = (ListView) findViewById(R.id.listview);
String[] values = new String[] { "Food (€4)", "Food also (€3)", "Food again (€2,50)" };
final ArrayList<String> list = new ArrayList<String>();
for (int i = 0; i < values.length; ++i) {
list.add(values[i]);
}
final StableArrayAdapter adapter = new StableArrayAdapter(this, android.R.layout.simple_list_item_1, list);
listview.setAdapter(adapter);
}
private class StableArrayAdapter extends ArrayAdapter<String> {
HashMap<String, Integer> mIdMap = new HashMap<String, Integer>();
public StableArrayAdapter(Context context, int textViewResourceId,
List<String> objects) {
super(context, textViewResourceId, objects);
for (int i = 0; i < objects.size(); ++i) {
mIdMap.put(objects.get(i), i);
}
}
}
----旧代码:----
我想要一个菜单列表&#39;以编程方式..像这样输出:
汉堡包 好吃的沙拉牛肉
披萨 有很多奶酪
鸡块 用最好的酱汁
此时所有句子都是单独编程的:
TextView mContent = new TextView(this);
mContent.setText("Hamburger");
mContent.setTextColor(getResources().getColor(android.R.color.black));
mContent.setPadding(32, 8, 32, 0);
mContent.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT));
((LinearLayout) linearLayout).addView(mContent);
TextView mContent2 = new TextView(this);
mContent2.setText("TextView mContent = new TextView(this);
//mContent.setText("Broodje hamburger (€6)\nBroodje hotdog (€4,50)\nPizza (€7)\nSpaghetti (€5)");
mContent.setText("Broodje hamburger (€6)");
mContent.setTextColor(getResources().getColor(android.R.color.black));
mContent.setPadding(32, 8, 32, 0);
mContent.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT));
((LinearLayout) linearLayout).addView(mContent);
TextView mContent2 = new TextView(this);
mContent2.setText("Met echt rundbeef, sla, tomaten en een lekker sausje");
mContent2.setTypeface(null, Typeface.ITALIC);
mContent2.setTextColor(getResources().getColor(android.R.color.black));
mContent2.setPadding(32, 0, 32, 16);
mContent2.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT));
((LinearLayout) linearLayout).addView(mContent2);");
mContent2.setTypeface(null, Typeface.ITALIC);
mContent2.setTextColor(getResources().getColor(android.R.color.black));
mContent2.setPadding(32, 0, 32, 16);
mContent2.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT));
((LinearLayout) linearLayout).addView(mContent2);
有没有更简单的方法来解决这个问题?
答案 0 :(得分:0)
使用ListView
和Adapter
。
在文档中,它在此解释:http://developer.android.com/guide/topics/ui/layout/listview.html
这是一个很好的Lars Vogel教程:http://www.vogella.com/tutorials/AndroidListView/article.html
将ListView
与Adapter
一起使用,即可管理列表中的每个项目。
答案 1 :(得分:0)
您可以使用ListView。它用于以您现在需要的方式显示事物列表。
请参阅this教程。
要自定义布局,您必须创建一个定义单个项目视图的自定义适配器。
StableArrayAdapter.java
// define your custom adapter
private class StableArrayAdapter extends ArrayAdapter<String> {
ArrayList<String> items1;
ArrayList<String> description1;
ViewHolder viewHolder;
public StableArrayAdapter(Context context, int textViewResourceId, ArrayList<String> items, ArrayList<String> description) {
// let android do the initializing :)
super(context, textViewResourceId, items);
this.items1=items;
this.description1 = description;
}
@Override
public int getItemViewType(int position) {
return (position == this.getCount() - 1) ? 1 : 0;
}
private class ViewHolder {
TextView item;
TextView desc;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
if (convertView == null) {
LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.single, parent, false);
viewHolder = new ViewHolder();
viewHolder.item = (TextView) convertView.findViewById(R.id.txt_item);
viewHolder.desc = (TextView) convertView.findViewById(R.id.txt_desc);
convertView.setTag(viewHolder);
} else{
viewHolder = (ViewHolder) convertView.getTag();
}
viewHolder.item.setText(items1.get(position).toString());
viewHolder.desc.setText(description1.get(position).toString());
return convertView;
}
@Override
public long getItemId(int arg0) {
return arg0;
}
}
single.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="vertical" >
<TextView
android:id="@+id/txt_item"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<TextView
android:id="@+id/txt_desc"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>