您的位置:首页 > 其它

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

2013-11-17 21:42 197 查看
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;
}

}

}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐