应用场景:
对同一类别的数据进行列表显示,或者移动端系统中某些功能按钮的需要进行网格分布(这点侧重于GridView的使用)。
使用方式:
【ListView】 以MainActivity为例说明
第一步:在activity_main.xml,添加如下代码;
<ListView
android:id="@+id/listview"
android:layout_width="match_parent"
android:layout_height="wrap_content">
</ListView>
第二步:在src新建一个类ListViewAdapter.java继承android.widget.BaseAdapter,并实现或复写对应的方法,示例如下。本例可为其他系统所复用。
public class ListViewAdapter extends BaseAdapter{
private List<Map<String, String>> lists;
private LayoutInflater mInflater;
private Context mainContext;
public ListViewAdapter(Context context, List<Map<String, String>> list) {
mInflater = LayoutInflater.from(context);
mainContext = context;
lists = list;
}
@Override
public int getCount() {
return lists.size();
}
@Override
public Object getItem(int position) {
return lists.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
ViewHolder holder=null;
if (convertView == null) {
holder = new ViewHolder();
convertView = mInflater.inflate(R.layout.view_news, null);
holder.title = (TextView) convertView.findViewById(R.id.view_news_item_title);
convertView.setTag(holder);
}else {
holder = (ViewHolder) convertView.getTag();
}
if(position%2==1){ //实现背景颜色的交替
convertView.setBackgroundColor(Color.rgb(220, 220, 220));
}else {
convertView.setBackgroundColor(Color.rgb(255, 250, 250));
}
final Map<String, String> map = lists.get(position);
String title = (String) map.get("title");
holder.title.setText(title);
holder.title.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
String toastTitle = (String)(lists.get(position).get("title"));
Toast.makeText(mainContext, toastTitle, Toast.LENGTH_SHORT).show();
}
});
return convertView;
}
static class ViewHolder { //ViewHolder ListView中 ItemView的对象
TextView title; //ListView中 ItemView中的控件的对象
}
}
第三步:在MainActivity.java的代码如下。
public class NewsActivity extends Activity {
private ListView newsListView;
private ListViewAdapter mainListViewAdapter;
private List<Map<String, String>> list = new ArrayList<Map<String, String>>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_news);
initViews();
}
private void initViews() {
//初始化ListView对象
newsListView = (ListView) findViewById(R.id.listview);
assembleData();
mainListViewAdapter = new MainListViewAdapter(NewsActivity.this, list);
//ListView 添加适配器类 ListViewAdapter
newsListView.setAdapter(mainListViewAdapter);
}
private void assembleData() {
String[] tempDatas = {"热烈祝贺我公司参与建设的河南省环境自动监控系统顺利通过竣工验收","上网电厂工况监控平台项目详细设计通过省环保厅评审", "祝贺公司成功“登顶”西藏环保项目","雪城软件助力河南省环保总量预算管理全国领先" };
for (int i = 0; i < tempDatas.length; i++) {
Map tempMap = new HashMap();
tempMap.put("title", "●"+tempDatas[i]);
list.add(tempMap);
}
}
}