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;
}
}
}
最常见的是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;
}
}
}
相关文章推荐
- 自己根据示例代码改写的可以用于Text-to-Speech的类库
- Listview不支持加载输入类控件,动态创建控件去代替listview的示例demo
- [10月5日的脚本] 用于向新创建邮箱发送欢迎邮件的脚本示例
- android中,用SimpleAdapter创建有自己布局的listView,以及listView的修改更新notifyDataSetChanged()的使用。
- 用Bitmap Font Generator 制作自己的 *.fnt 字体 用于CCLabelBMFont的创建使用
- Android之ListView使用方法-ArrayAdapter-SimpleAdapter-BaseAdapter
- ListView 自己定义BaseAdapter实现单选打勾(无漏洞)
- Unity之ShareSDK(三)——创建自己的密钥库用于签名
- Android UI设计:ListView适配器——ArrayAdapter、SimpleAdapter与BaseAdapter
- webservice的创建、发布及调用示例(以调用自己发布的webservice和中国气象局提供的webservice为例)
- Android之ListView使用方法-ArrayAdapter-SimpleCursorAdapter-SimpleAdapter-BaseAdapter
- android--(布局ListView、优化、刷新分页、ArrayAdapter、SimpleAdapter 、BaseAdapter)
- 使用BaseAdapter 与ListView结合创建图文实现更灵活的列表
- 黑马程序员---在类中需要自己创建赋值构造函数的原因(特别是用于指针数据中)
- ListView学习笔记之二------SimpleAdapter, BaseAdapter构造自己的Adapter
- webservice的创建、发布及调用示例(以调用自己发布的webservice和中国气象局提供的webservice为例)
- ListView使用ArrayAdapter、BaseAdapter实现
- [10月5日的脚本] 用于向新创建邮箱发送欢迎邮件的脚本示例
- 今天创建了CSDN博客,用于记录自己的学习经历
- C# 创建、部署和调用WebService的简单示例 webservice 可以用于分布式应用程序之间的交互,和不同程序之间的交互。 概念性的东西就不说太多,下面开始创建一个简单的webservi