ArrayAdapter非常简单,但是用于ListView的时候限制太多,一般只用于显示单行的文本。
最常见的是ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, mContent);
mContent是一个String[],把字符串放进default layout android.R.layout.simple_list_item_1中。
另外一种方式是把字符串设置到layout R.layout.activity_my_list_activity2 的 R.id.text这个text view中,这样你可以自己定义一下你的TextView
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.activity_my_list_activity2, R.id.text, mContent);
下面是自己实现BaseAdapter:
import android.app.ListActivity;
import android.content.Context;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.RelativeLayout;
import android.widget.TextView;
import android.widget.Toast;
public class MyListActivity3 extends ListActivity {
MyArrayAdapter mAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//setContentView(R.layout.activity_my_list_activity3);
mAdapter = new MyArrayAdapter(this);
getListView().setAdapter(mAdapter);
getListView().setOnItemClickListener(new OnItemClickListener() {
/*如果自定义的ListView中某个item中含有button,那么这个onItemClick就不会被叫到,本例的item layout是TextView+ImageView,所以会叫到这个方法*/
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
// TODO Auto-generated method stub
Toast.makeText(MyListActivity3.this, "Hi "+(String)mAdapter.getItem(arg2), Toast.LENGTH_LONG).show();
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.my_list_activity3, menu);
return true;
}
public class MyArrayAdapter extends BaseAdapter {
String[] mName = {"YoonA", "Olivia"};
Context mCtx = null;
public MyArrayAdapter(Context c) {
super();
mCtx = c;
}
/*要实现下面这几个方法*/
@Override
public int getCount() {
// TODO Auto-generated method stub
return mName.length;
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return mName[position];
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}
/*主要工作是实现getView方法*/
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
if(convertView == null) {
convertView = (RelativeLayout)LayoutInflater.from(mCtx).inflate(R.layout.activity_my_list_activity3, parent, false) ;
}
TextView tv = (TextView)convertView.findViewById(R.id.text_name); /*ViewGroup的findViewById*/
tv.setText(mName[position]);
ImageView iv = (ImageView)convertView.findViewById(R.id.image);
iv.setImageResource(R.drawable.ic_launcher);
return convertView;
}
}
}