ArrayAdapter和自己创建BaseAdapter用于ListView的示例

来源:互联网 发布:狂湿淘宝店 编辑:程序博客网 时间:2024/05/18 01:50

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;
}

}


}



原创粉丝点击