如何为已创建的列表视图(以下代码)实现getView()(如何创建getview())。这样我可以改变的TextView项的字体和其它属性stylig如何为列表视图实现getview()
MainActivity.java
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ListView listView1 = (ListView) findViewById(R.id.listView1);
String[] items = { "some", "fancy", "items", "to", "show" };
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
R.layout.listitem, items);
listView1.setAdapter(adapter);
}
activity_main.xml中
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity" >
<ListView
android:id="@+id/listView1"
android:layout_height="fill_parent"
android:layout_width="fill_parent" />
</RelativeLayout>
listview.xml
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textSize="20sp"
android:padding="22dp"
android:gravity="center_horizontal"
/>
改变MainActivity.java
public class MainActivity extends Activity {
Context context;
ArrayAdapter<String> adapter;
String[] items = { "some", "fance", "rock", "shot", "trance" };
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ListView listView1 = (ListView) findViewById(R.id.listView1);
adapter = new ArrayAdapter<String>(this,
R.layout.genre_list, items);
listView1.setAdapter(adapter);}
public View getView(int position, View convertView, ViewGroup parent) {
View row;
if (null == convertView) {
LayoutInflater mInflater = (LayoutInflater) context
.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
row = mInflater.inflate(R.layout.genre_list, null);
} else {
row = convertView;
}
TextView tv = (TextView)row.findViewById(android.R.id.title);
Typeface font = Typeface.createFromAsset(getAssets(),"roboto.ttf");
Toast.makeText(getApplicationContext(), "font fetched!",
Toast.L ENGTH_LONG).show();
tv.setText(items[position]);
tv.setTypeface(font);
return row;
}
查一下我的编辑更改MainActivity.java这不工作,我不认为getView被称为 – user1979237
不,它不是被称为:但你可以通过只覆盖默认getView方法做到这一点。你必须**写一个自定义适配器来使用'getView()'。请观看上面的视频,它描述了如何做你想做的事情,我没有理由在这里重复它的内容。该视频还表明,您尝试使用的方法可以通过ViewHolders等方式加以改进。 – Sam