Web前端最全Android进阶(十四)Android Adapter详解(2),2024年最新中高级前端大厂面试秘籍

最后

javascript是前端必要掌握的真正算得上是编程语言的语言,学会灵活运用javascript,将对以后学习工作有非常大的帮助。掌握它最重要的首先是学习好基础知识,而后通过不断的实战来提升我们的编程技巧和逻辑思维。这一块学习是持续的,直到我们真正掌握它并且能够灵活运用它。如果最开始学习一两遍之后,发现暂时没有提升的空间,我们可以暂时放一放。继续下面的学习,javascript贯穿我们前端工作中,在之后的学习实现里也会遇到和锻炼到。真正学习起来并不难理解,关键是灵活运用。

开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

css源码pdf

JavaScript知识点

@Override

public int getCount() {

return data==null?0:data.size();

}

//item对象

@Override

public Object getItem(int position) {

return position;

}

//item的id

@Override

public long getItemId(int position) {

return position; 

}

//绘制每一个item

@Override

public View getView(int position, View convertView, ViewGroup parent) {

Holder holder = null;

if(convertView==null) {

convertView=LayoutInflater.from(context).inflate(resource, null); 

holder=new Holder(); 

holder.imageView=(ImageView) convertView.findViewById(R.id.listitem_pic); 

holder.title=(TextView) convertView.findViewById(R.id.listitem_title);

holder.content=(TextView) convertView.findViewById(R.id.listitem_content);

convertView.setTag(holder);

} else {

holder=(Holder) convertView.getTag(); 

}

holder.imageView.setImageResource(Integer.parseInt(data.get(position).get(from[0]).toString()));

holder.title.setText(data.get(position).get(from[1]).toString());

holder.content.setText(data.get(position).get(from[2]).toString()); return convertView;

}

class Holder{

ImageView imageView; 

TextView title; 

TextView content;

}

}


第三步:将数据填充到对象中去



listView.setAdapter(simpleAdapter);


这样就完成了数据填充器的数据填充。


下面是一个`SimpleAdapter`的例子:



/--------------------TestUIList.java---------------------------/

public class TestUIList extends Activity {

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

ListView list = (ListView) findViewById(R.id.MyListView);

ArrayList> lstImageItem = new ArrayList>();

String[] str1 = { "row one", "row two", "row three", "row four" };

String[] str2 = { "第一行", "第二行", "第三行", "第四行" };

for (int i = 0; i < str1.length; i++) {

  HashMap map = new HashMap();

  map.put("ItemImage", R.drawable.icon);

  map.put("ItemTitle", str1[i]);

  map.put("ItemText", str2[i]);

  lstImageItem.add(map);

}

SimpleAdapter saImageItems = new SimpleAdapter(this,

lstImageItem,

R.layout.simple_list_item_2,

new String[] { "ItemImage", "ItemTitle", "ItemText" },

new int[] { R.id.ItemImage, R.id.ItemTitle, R.id.ItemText });

list.setAdapter(saImageItems);

}

}


如果你的ListView的每一行想实现被点击后有响应事件。最省事的方法是继承一个ListActivity。



`ListActivity`是一个这样的`Activity`:这个Activity能通过绑定到一个像array或cursor这样的数据源来显示一些items的list,并且当用户选了一个item时,能够暴露事件句柄。



`ListActivity`拥有一个`ListView`对象。这个`ListView`对象能够被绑定到不同的数据源,特别是一个数组或者一个拥有查询结果的`Cursor`。`ListActivity`有三种用法,分别是`Binding,Screen Layout`和`Row Layout`。下面仅讨论一下`Screen Layout`:



`ListActivity`有一个默认的layout。这个 layout是由一个在屏幕中央的、单独的、全屏的list构成。然而,如果你想的话,你可以通过在`onCreate()`里调用`setContentView()`方法来设置你自己的view layout的方式制定屏幕layout。



要这样做,你自己的view必须包含一个id为“`@android:id/android:list`”(或者在代码中有list对象)。



当你制定这个view是空的时,你能够包含任何类型的view对象来显示。这个“空list”通知者必须有一个`id“android:empty”`。



注意,最后一定要调用`setListAdapter(adapter)`方法来把通过`Adapter`绑定了数据的这个List显示出来。`setListAdapter`方法间接调用了`Adapter`的getView方法,其作用是返回你想要的view类型。



而且当点击`listView`里的item时,会根据`getView`重画这个`ListView`。想要实现事件监听,就要重写`protected void onListItemClick(ListView l, View v, int position,long id)`方法。



想要把在XML中自定义了一行的view逐行显示在`ListActivity`中自定义的ListView中,并且在每行动态绑定数据的话,一般要自己写一个`MyAdapter`类,这个Adapter继承`BaseAdapter`并且其构造函数中至少有一个List参数来实现动态绑定数据。有两个重要的步骤:


1. 重写getView方法,其中一重要步骤就是用items.get(position)方法来获得被传入的数据。其中items是一个List,它被赋了传入的List参数的值。position是这个数据在ListView中的行数。Get返回的是E类型.即List中的模板类型。
2. 写一个内部类`private class ViewHolder`。这个内部类只有成员变量,它们就是你想在`ListView`中的一行里要显示的小View成分。


## 三、Adapter 应用实战


要想在`Adapter`中动态传入其它类的数据,就要在构造函数中再增加一个(或更多)List参数。



最后给出自己写的MyAdapter配合ListActivity实现监听事件的例子:



/--------------------MyHome.java-----------------------/

public class MyHome extends ListActivity

{

private List items = null;

protected void onCreate(Bundle icicle)

{

	super.onCreate(icicle);

	setContentView(R.layout.main);

	items = new ArrayList();

	String[] titles = { "默认主题", "主题A", "主题B", "中秋佳节", "粉红女郎", "花样年华" };

	for (int i = 0; i < titles.length; i++)

	{

	String title = titles[i];

	items.add(title);

	}

	setListAdapter(new MyAdapter(this, items));

}

@Override

protected void onListItemClick(ListView l, View v, int position, long id)

{

new AlertDialog.Builder(MyHome.this).setItems(

R.array.items_my_dialog, new DialogInterface.OnClickListener()

{

public void onClick(DialogInterface dialog, int whichcountry)

{}

}).show();

}

}

/--------------------MyAdapter.java-----------------------/

public class MyAdapter extends BaseAdapter

{

private LayoutInflater mInflater;

private Bitmap icom_theme;

private Bitmap icon_selected32;

private List items;

public MyAdapter(Context context, List it)

{

mInflater = LayoutInflater.from(context);

items = it;

icom_theme = BitmapFactory.decodeResource(context.getResources(),R.drawable.theme);

icon_selected32=BitmapFactory.decodeResource(context.getResources(), R.drawable.selected32);

}

public int getCount()

{

return items.size();

}

public Object getItem(int position)

{

return items.get(position);

}

public long getItemId(int position)

{

return position;

}

public View getView(int position, View convertView, ViewGroup parent)

{

ViewHolder holder;

convertView = mInflater.inflate(R.layout.file_row, null);

holder = new ViewHolder();

holder.text = (TextView) convertView.findViewById(R.id.text);

holder.mTheme = (ImageView) convertView.findViewById(R.id.theme);

前端面试题汇总

JavaScript

开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

性能

linux

前端资料汇总

bs.youkuaiyun.com/forums/4304bb5a486d4c3ab8389e65ecb71ac0)**

性能

linux

前端资料汇总

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值