Android开发之ListView Adapter 模板
来源:互联网 发布:软件开发设计文档 编辑:程序博客网 时间:2024/06/08 09:35
如果不对 Adapter 的写法进行规范,开发人员还是会根据自己的习惯,写出各种各样的 Adapter,如:
- 很多开发人员都喜欢将 Adapter 内嵌在 Activity 中,一般会使用 SimpleAdapter。
- 由于没有使用实体,所以一般会把一个字典作为构造函数的参数注入到 Adapter 中。
效果图:
主布局文件:
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.gyq.studyapp.MainActivity"> <ListView android:id="@+id/list_view" android:layout_width="match_parent" android:layout_height="match_parent"/></RelativeLayout>
item 布局文件:
<?xml version="1.0" encoding="utf-8"?><TextView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/id_tv_title" android:layout_width="match_parent" android:layout_height="50dp" android:background="#aa111111" android:gravity="center_vertical" android:paddingLeft="15dp" android:textColor="#ffffff" android:text="hello" android:textSize="20sp" android:textStyle="bold" ></TextView>
CinemaAdapter.java
import android.content.Context;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.TextView;import com.gyq.studyapp.R;import java.util.List;/** * Created by gyq on 2017/6/13 14:46 */public class CinemaAdapter extends BaseAdapter { private List<String> mDatas; private Context mContext; private LayoutInflater mInflater; public CinemaAdapter(List<String> datas, Context context) { this.mDatas = datas; this.mContext = context; mInflater = LayoutInflater.from(context); } @Override public int getCount() { return mDatas.size(); } @Override public Object getItem(int position) { return mDatas.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { Holder holder = null; if(convertView == null) { holder = new Holder(); convertView = mInflater.inflate(R.layout.item_cinemalist,parent,false); holder = new Holder(); holder.mTextView = (TextView)convertView.findViewById(R.id.id_tv_title); convertView.setTag(holder); }else { holder = (Holder)convertView.getTag(); } holder.mTextView.setText(mDatas.get(position)); return convertView; } private final class Holder { TextView mTextView; }}
MainActivity.java
package com.gyq.studyapp;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.view.View;import android.widget.AdapterView;import android.widget.ListView;import android.widget.Toast;import com.gyq.studyapp.adapter.CinemaAdapter;import java.util.ArrayList;import java.util.Arrays;import java.util.List;public class MainActivity extends AppCompatActivity { private ListView mListView; private List<String> mInfos; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initData(); mListView = (ListView)findViewById(R.id.list_view); CinemaAdapter adapter = new CinemaAdapter(mInfos,this); mListView.setAdapter(adapter); mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) { //do something Toast.makeText(MainActivity.this,"点击了"+i,Toast.LENGTH_SHORT).show(); } }); } private void initData() { mInfos = new ArrayList<>(Arrays.asList("Hello","IOS","Android","Java")); }}
2,万能的适配器
先给出鸿洋大神的 github 地址:万能的 Adapter
1,先在 app 文件夹下的 build.gradle 添加:
dependencies { ... compile 'com.zhy:base-adapter:3.0.3'}
2,使用:
import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.view.View;import android.widget.AdapterView;import android.widget.ListView;import android.widget.Toast;import com.zhy.adapter.abslistview.CommonAdapter;import com.zhy.adapter.abslistview.ViewHolder;import java.util.ArrayList;import java.util.Arrays;import java.util.List;public class MainActivity extends AppCompatActivity { private ListView mListView; private List<String> mInfos; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initData(); mListView = (ListView)findViewById(R.id.list_view); mListView.setAdapter(new CommonAdapter<String>(this,R.layout.item_cinemalist,mInfos) { @Override protected void convert(ViewHolder viewHolder, String item, int position) { viewHolder.setText(R.id.id_tv_title,item); } }); mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) { //do something Toast.makeText(MainActivity.this,"点击了"+i,Toast.LENGTH_SHORT).show(); } }); } private void initData() { mInfos = new ArrayList<>(Arrays.asList("Hello","IOS","Android","Java")); }}
效果和开始的效果图是一样的。
附上demo:ListViewDemo
阅读全文
0 0
- Android开发之ListView Adapter 模板
- Android开发之ListView Adapter优化
- Android 开发之 RecyclerView Adapter 模板
- android开发--ListView&Adapter
- android--listView的adapter模板
- [ListView]Android开发之ListView 适配器(Adapter)优化
- [ListView]Android开发之ListView 适配器(Adapter)优化
- Android开发之ListView 适配器(Adapter)优化
- Android开发之ListView 适配器(Adapter)优化
- Android开发之ListView 适配器(Adapter)优化
- Android开发之ListView 适配器(Adapter)优化
- Android开发之ListView 适配器(Adapter)优化
- Android开发之ListView 适配器(Adapter)优化
- Android开发之ListView 适配器(Adapter)优化
- Android开发之ListView 适配器(Adapter)优化
- Android开发之ListView 适配器(Adapter)优化
- Android开发之ListView 适配器(Adapter)优化
- Android开发之ListView 适配器(Adapter)优化
- R语言关联分析
- Lua和C++交互详细总结
- 文章标题
- Android案例学习——新建联系人
- 乐学成语上
- Android开发之ListView Adapter 模板
- 欢迎使用CSDN-markdown编辑器
- Android签名机制之---签名验证过程详解
- OpenCV读代码笔记: 颜色通道过滤
- RTMP协议从入门到放弃
- 浅谈$('#?)与$('[id="?"]')
- Java ConcurrentModificationException异常原因和解决方法
- 设计模式之单例模式(Singleton)
- plsql连接本地数据库