我使用两个单独的 .'xml's 在每个列表视图项中创建了一个包含 3 个项目的列表视图。
1) list_view.xml
<ListView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/ListView">
</ListView>
2) list_item.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
android:id="@+id/relativeLayout1"
android:layout_height="fill_parent"
android:layout_width="fill_parent"
xmlns:android="http://schemas.android.com/apk/res/android"
android:paddingRight="10dp"
android:paddingLeft="10dp"
android:paddingTop="10dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
android:text="Text here"
android:id="@+id/textView"
android:layout_alignTop="@+id/TextView"
android:layout_alignLeft="@+id/TextView"
android:layout_centerVertical="true"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
android:text="-"
android:id="@+id/seperator"
android:layout_alignBottom="@+id/textView"
android:layout_centerVertical="true"
android:layout_centerHorizontal="true"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
android:text="000"
android:id="@+id/price"
android:layout_alignParentTop="true"
android:layout_centerVertical="true"
android:layout_alignParentRight="true"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
android:text="$"
android:id="@+id/prefix"
android:layout_alignParentTop="true"
android:layout_centerVertical="true"
android:layout_toLeftOf="@+id/price"/>
</RelativeLayout>
现在,我使用“SimpleAdapter”创建了一个包含所有项目的列表视图。现在我想访问列表视图中的项目(textView、分隔符、...)并以编程方式更改颜色、大小等。
这是我的 MainActivity.java 的代码
public class MainActivity extends Activity {
public RelativeLayout relativeLayout;
public RelativeLayout.LayoutParams lp;
public SimpleAdapter mList;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.list_view);
ListView list = (ListView) findViewById(R.id.ListView);
//background color
list.setBackgroundColor(Color.YELLOW);
TextView itemText = (TextView)findViewById(R.id.textView);
itemText.setTypeface(Typeface.SANS_SERIF);
ArrayList<HashMap<String, String>> mylist = new ArrayList<HashMap<String, String>>();
HashMap<String, String> map = new HashMap<String, String>();
//Dummy data
//add all elements to map
map.put("text", "click to edit0");
map.put("seperator", "-");
map.put("price", "100");
// add map elements to list
mylist.add(map);
//add all elements to map
map = new HashMap<String, String>();
map.put("text", "click to edit1");
map.put("seperator", "-");
map.put("price", "102");
//add all elements to map
mylist.add(map);
map = new HashMap<String, String>();
map.put("text", "click to edit2");
map.put("seperator", "-");
map.put("price", "104");
mylist.add(map);
//use adapter to set list items
mList = new SimpleAdapter(this, mylist, R.layout.list_item,
new String[] {"text", "seperator", "price"}, new int[] {R.id.textView, R.id.seperator, R.id.price});
list.setAdapter(mList);
}
@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;
}
}
在我尝试访问列表视图项目并更改它们之前,一切正常。我的代码崩溃并在
TextView itemText = (TextView)findViewById(R.id.textView);
itemText.setTypeface(Typeface.SANS_SERIF);
我怀疑这可能是因为我没有将 setContentView 设置为 list_item.xml。有没有办法访问元素?如果是怎么办?