手机腾讯网一般用PC浏览器不能访问的是因为程序对浏览器的UA进行判断过滤,知道这个原理后,我就来给我们的UA制造假象,都说了,大活人难道还能被屎尿憋死。
以下做法,一般用户一般没这个需求吧,呵呵~~
因为工作需要,经常要看各大门户的WAP站,可是QQ手机腾讯网在PC上又无法访问,无奈用手机,那你就OUT了,下面介绍个用Firefox访问手机腾讯网的办法:
1、网上搜索插件:wmlbrowser + user-agent-switcher
下到这两个插件后,直接将插件拖到FF页面就OK
wmlbrowser:https://addons.mozilla.org/zh-CN/firefox/addon/62/
user-agent-switcher:https://addons.mozilla.org/zh-CN/firefox/addon/59/
2、扩展user-agent
安装完wmlbrowser插件后,你的FF就可以访问一般的WAP站了,不过手机腾讯网还是不能访问,这时候user-agent派上用场了,“工具-default user agent” 切换到iphone或者其他,然后你再试试,OL·· :-)
如果你嫌这些UA不够多,或者你想换其他的UA,自己可以编辑,或者直接导入UA,同样网上搜索user-agents-fisio.cn.xml,下载到这个xml后,可以直接在FF中导入,然后就OK了,你想换什么UA就换什么UA
3、完成后,重启你的FF,畅游手机腾讯网吧。
在android开发中,listview是比较常用的一个组件,它以列表的形式显示数据。列表显示需要三个元素:
1、listview用来显示具体列表的view
2、XXAdapter适配器用来把具体的数据映射到listview
3、具体需要展示的数据,比如文字,图片,按钮等组件
listview的适配器类型主要分为三种:ArrayAdapter、SimpleAdapter、SimpleCursorAdapter。
ArrayAdapter比较简单,只能显示一行文字,SimpleAdapter扩充性很好,可以自己定义出很多种效果,SimpleCursorAdapter可以和数据库很好的结合,把数据库中的表的内容展示到列表上。
有些时候,由于我们需要展示的数据量很大,而且也需要美化显示的效果,这时我们就需要自定义一个适配器,只需继承BaseAdapter,实现它的四个方法。listview在开始绘制的时候,首先调用getCount()方法,得到需要绘制的item数量,再调用getView绘制每一个item,每调用一次getView都会实例化一个view对象,因此对于显示大量数据的时候,必须进行优化。下面是一个小例子,getView方法对listview进行了一定的优化,当listview的某一项被选择或者点击时,更换该项的背景图片。源码如下:
ListViewActivity.java
package com.alex.activity; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import android.app.Activity; import android.content.Context; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.view.Window; import android.view.WindowManager; import android.widget.AdapterView; import android.widget.BaseAdapter; import android.widget.ListView; import android.widget.TextView; import android.widget.AdapterView.OnItemSelectedListener; public class ListViewActivity extends Activity { /** Called when the activity is first created. */ private List<Map<String, Object>> datas = null; //存放初始化数据 private ListView roomListView = null; //Button back; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //去除窗口的title区域 this.requestWindowFeature(Window.FEATURE_NO_TITLE); //全屏显示 this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); this.setContentView(R.layout.listview); initDatas(); findViews(); } private void initDatas() { datas = new ArrayList<Map<String,Object>>(); for(int i=0;i<12;i++) { Map<String, Object> itemMap = new HashMap<String,Object>(); itemMap.put("data", "测试数据"+i); datas.add(itemMap); } } private void findViews() { roomListView = (ListView)findViewById(R.id.room_list); roomListView.setAdapter(new MyListViewAdapter(this)); roomListView.setVerticalScrollBarEnabled(true); //显示垂直滚动条 roomListView.setSelection(0); //默认选中第一项 } public class MyListViewAdapter extends BaseAdapter { private LayoutInflater mInflater; //作用:把xml布局文件实例化成View public MyListViewAdapter(Context context) { this.mInflater = LayoutInflater.from(context); } @Override public int getCount() { return datas.size(); } @Override public Object getItem(int position) { return null; } @Override public long getItemId(int position) { return 0; } @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder holder = null; if(convertView == null) { holder = new ViewHolder(); convertView = mInflater.inflate(R.layout.list_row, null);
convertView.setBackgroundResource(R.drawable.dtht_1); holder.data = (TextView)convertView.findViewById(R.id.data); convertView.setTag(holder); } else { holder = (ViewHolder)convertView.getTag(); } holder.data.setText(String.valueOf(datas.get(position).get("data"))); return convertView; } } public final class ViewHolder { TextView data; } }
listview.xml
<?xml version="1.0" encoding="utf-8"?> <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" > <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="fill_parent" > <ListView android:id="@+id/room_list" android:layout_width="fill_parent" android:layout_height="fill_parent" android:listSelector="@drawable/dtht_2" android:background="@drawable/dtht_1" android:cacheColorHint="#00000000" android:divider="#00000000" android:dividerHeight="1dip" /> </LinearLayout> </FrameLayout>
list_row.xml
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent"> <TextView android:id="@+id/data" android:layout_width="fill_parent" android:layout_height="36dip" android:layout_alignParentLeft="true" android:gravity="center" android:textColor="#ffffff" /> </RelativeLayout>
效果图见附件
,roomListView.setOnItemSelectedListener(...)这段代码可以去掉的
今天做东西的时候发现ListView的背景会变成黑色,原因没去找,查了下解决方法如下:
设置背景色为透明
xml:
android:cacheColorHint="#00000000"
java code:
listView.setCacheColorHint(0x00000000);