android开发之为listview绑定数据的三种方式
来源:互联网 发布:传奇霸业时装分解数据 编辑:程序博客网 时间:2024/06/04 01:37
第一种,使用simple adapter
simpleadapter 是最简单的一种方式,但是其数据源必须是map类型。
1.生成 SimpleAdapter()对象
2.设置数据源
3.设置每个item的布局
4.设置SimpleAdapter(Context context, //上下文
List<? extendsMap<String, ?>> data, //数据源
intresource, //每个item的布局
String[] from,//map的key
int[] to) //相应控件的id
5.为listview绑定SimpleAdapter
接下来看代码:
public class User { private String userName; private int userRank; public User(String userName, int userRank) { super(); this.userName = userName; this.userRank = userRank; } public User(){ super(); } public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } public int getUserRank() { return userRank; } public void setUserRank(int userRank) { this.userRank = userRank; }}
Actvity的代码:
public class RankingActivity extends Activity { //数据源 ArrayList<User> al = new ArrayList<User>(); private ListView ls_rank; List<Map<String, String>> data = new ArrayList<Map<String, String>>(); @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.rankinglist); ls_rank = (ListView) findViewById(R.id.ls_rank); al.add(new User("aaa", 666)); al.add(new User("bbb", 777)); al.add(new User("ccc", 888)); fillData();// 第一种 simpleAdapter SimpleAdapter adapter = new SimpleAdapter(RankingActivity.this, data, R.layout.rank_list_item, new String[]{"userName", "userRank"}, new int[]{R.id.tv_name, R.id.tv_rank}); ls_rank.setAdapter(adapter); private void fillData() { for (User user : al) { Map<String, String> map = new HashMap<String, String>(); map.put("userName", user.getUserName()); map.put("userRank", user.getUserRank() + ""); data.add(map); } }
第二种:BaseAdapter
1.创建一个MyBaseAdapter,重写四个方法
class MyBaseAdapter extends BaseAdapter { @Override public int getCount() { return al.size(); } @Override public Object getItem(int i) { return i; } @Override public long getItemId(int i) { return i; } @Override public View getView(int i, View view, ViewGroup viewGroup) { View row = view; Wrapper wrapper; if (row == null) { row = getLayoutInflater().inflate(R.layout.rank_list_item, viewGroup, false); wrapper = new Wrapper(row); row.setTag(wrapper); } else { wrapper = (Wrapper) row.getTag(); } TextView tvName = wrapper.gettvName(); TextView tvRank = wrapper.gettvRank(); tvName.setText(al.get(i).getUserName()); tvRank.setText(al.get(i).getUserRank()+""); return row; } } class Wrapper { private TextView tvName; private TextView tvRank; private View row; public Wrapper(View row) { this.row = row; } public TextView gettvName() { if (tvName == null) { tvName = (TextView) row.findViewById(R.id.tv_name); } return tvName; } public TextView gettvRank() { if (tvRank == null) { tvRank = (TextView) row.findViewById(R.id.tv_rank); } return tvRank; } }然后在onCreate里面绑定adapter就可以了
效果如上所示
三:ArrayAdapter,新建一个MyArrayAdapter 重写getView方法
class MyArrayAdapter extends ArrayAdapter<User>{ public MyArrayAdapter(@NonNull Context context, @LayoutRes int resource, @IdRes int textViewResourceId, @NonNull List objects) { super(context, 0, 0, objects); } @NonNull @Override public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) { View row = convertView; Wrapper wrapper; if (row == null) { row = getLayoutInflater().inflate(R.layout.rank_list_item, parent, false); wrapper = new Wrapper(row); row.setTag(wrapper); } else { wrapper = (Wrapper) row.getTag(); } TextView tvName = wrapper.gettvName(); TextView tvRank = wrapper.gettvRank(); tvName.setText(al.get(position).getUserName()); tvRank.setText(al.get(position).getUserRank()+""); return row; } }
效果如上所示
三种方法完成了
阅读全文
0 0
- android开发之为listview绑定数据的三种方式
- ListView的数据显示,三种适配器绑定方式
- Android开发之ListView列数据的绑定
- Android ListView数据绑定显示的三种解决方法
- Android学习总结七:绑定ListView数据的方式
- Flex 数据的三种绑定方式
- 双向数据绑定的三种方式
- android ListView布局之三(使用自定义的Adapter绑定数据,通过contextView.setTag绑定数据)有按钮的ListView
- android ListView布局之三(使用自定义的Adapter绑定数据,通过contextView.setTag绑定数据)有按钮的ListView
- 其他两种绑定ListView数据的方式
- 其他两种绑定ListView数据的方式
- 其他两种绑定ListView数据的方式
- Android应用开发之sqlite使用模糊查询数据库数据的三种方式
- javascript实现数据双向绑定的三种方式
- AngularJS(三)视图绑定数据的两种方式
- Android学习笔记--ListView的数据绑定
- [Android开发]Android之使用HTTP的get,post,HttpClient三种方式向服务器端提交文本数据
- Android开发之LayoutInflater的三种实例化方式
- 设计模式之单例模式
- JSONObject处理Date类型 java.sql.Date 转化java.util.Date 问题
- Computer Networking——network layer QA
- 使用Afl-fuzz (American Fuzzy Lop) 进行fuzzing测试(四)——直接对二进制进行fuzzing
- 关于事务 --- 丢失更新
- android开发之为listview绑定数据的三种方式
- ES6中的Set和Map集合
- iOS开发中用到的函数
- 深入理解MVP概念送上demo
- DOS命令整理
- Nginx try_files 里的一个坑
- bigint
- 深机笔记
- E