您的位置:首页 > 移动开发 > Android开发

android wheelview使用,ViewHolder模式,导入第三方包的做法

2015-06-22 23:41 579 查看
1.今天使用到了wheelview,之前的wheelview使用只是使用了原生的,非常不好看,为了做出没有阴影的,尝试了好久,终于找到了,才发现其实注释写得很清楚了。

<span style="font-size:18px;">/** Top and bottom shadows colors */
private int[] SHADOWS_COLORS = new int[] { 0xFF111111, 0x00AAAAAA,
0x00AAAAAA };</span>
就是这三个值设置了上面和下面的阴影,然后wheelView本身有一个setShadowColor(int,int,int)的方法,可以达到目标。

然后前景色可以设置来修改被选中的条目的样子



就是那个蓝色线的样式

2,关于viewHolder

之前也有使用viewHolder,但是使用的方法不对,导致使用的过程中出现list的条目出错的情况,这是之前的错误代码

@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = inflater.inflate(R.layout.listitem_editxinfo, null);
holder.name = (TextView) convertView
.findViewById(R.id.tv_name_edxinfo);
holder.song = (EditText) convertView
.findViewById(R.id.et_song_edxinfo);
holder.order = (EditText) convertView
.findViewById(R.id.et_order_edxinfo);
}
if (!KuDianPingApplication.xuanshous.get(position).xdtime
.equals("null")) {
MyListener l = new MyListener();
holder.song.setEnabled(false);
holder.order.setEnabled(false);
holder.song.setOnClickListener(l);
holder.song.setOnClickListener(l);
}
holder.name
.setText(KuDianPingApplication.xuanshous.get(position).xname);
holder.song
.setText(KuDianPingApplication.xuanshous.get(position).xsong);
holder.order
.setText(KuDianPingApplication.xuanshous.get(position).xorder);
final int itemposition = position;
holder.song.setOnFocusChangeListener(new OnFocusChangeListener() {
// set listener to modify change on song and order
@Override
public void onFocusChange(View v, boolean hasFocus) {
if (!hasFocus) {
KuDianPingApplication.xuanshous.get(itemposition).xsong = ((EditText) v)
.getText().toString();
}
}
});
holder.order.setOnFocusChangeListener(new OnFocusChangeListener() {

@Override
public void onFocusChange(View v, boolean hasFocus) {
// modify order
if (hasFocus) {
KuDianPingApplication.xuanshous.get(itemposition).xorder = ((EditText) v)
.getText().toString().trim();
}

}
});
return convertView;
}上面的使用主要是:
1,所有的listItem共用了一个ViewHolder,

2.ViewHolder不是静态的,

3.公用一个Inflater(不知道是不是不对,)

这样的adapter在list的个数超出屏幕之后就不行了,出现控件缺失,错位等问题

今天看了一下vogella,发现关于ViewHolder的使用大不相同

1.viewHolder是静态的类

2.不直接使用convertView,声明一个view,将convertView赋值给它

2.每个list的Item独享一个inflater

3,在getView里面实例化一个ViewHolder,然后将这个ViewHolder赋值给前面的表示ListItem的View的tag

4.在if块的外面通过tag取出ViewHolder进行操作

示例代码:

@Override
public View getView(int position, View convertView, ViewGroup parent) {
View v = convertView;
ViewHolder viewHolder = new ViewHolder();
if (v == null) {
v = context.getLayoutInflater().inflate(R.layout.item_vege, null);
viewHolder.rv_vpic = (RoundView) v.findViewById(R.id.iv_vpic_query);
viewHolder.tv_vname = (TextView) v
.findViewById(R.id.tv_vname_query);
viewHolder.tv_vtype = (TextView) v
.findViewById(R.id.tv_vtype_query);
viewHolder.tv_vweight = (TextView) v
.findViewById(R.id.tv_vweight_query);
viewHolder.tv_vprice = (TextView) v
.findViewById(R.id.tv_vprice_query);
viewHolder.tv_vbdate = (TextView) v
.findViewById(R.id.tv_vbdate_query);
viewHolder.tv_vodate = (TextView) v
.findViewById(R.id.tv_vodate_query);
v.setTag(viewHolder);
}
viewHolder = (ViewHolder) v.getTag();
try {
viewHolder.rv_vpic.setImageBitmap(BitmapFactory.decodeStream(am
.open("vegepic/" + data.get(position).getVid() + ".png")));
} catch (IOException e) {
viewHolder.rv_vpic.setImageResource(R.drawable.ic_launcher);
e.printStackTrace();
}
viewHolder.tv_vname.setText(data.get(position).getV_name());
viewHolder.tv_vtype.setText(data.get(position).getV_type());
viewHolder.tv_vweight.setText("质量:" + data.get(position).getV_weight()
+ "Kg");
viewHolder.tv_vprice.setText("单价:" + data.get(position).getV_price()
+ "元/Kg");
viewHolder.tv_vbdate
.setText("购买日期:" + data.get(position).getV_b_date());
viewHolder.tv_vodate.setText("到期日期:" + data.get(position).getV_odate());
return v;
}
这样的是合理的,在超出屏幕之外还可以使用
3.关于导入第三方的jar包

直接将包放到lib里面再添加到buildpath里面可能会出现找不到类的错误,可以看看

这个界面,同时出现多dex文件的错误也有可能是因为在这里勾选多个项目导致的,去掉一些重复的就行



4.在sqllite查询的时候,只会将?当作占位符,如果需要模糊查询应该在selectionArgs[]里面给每个参数加上%%,在?处加会出错,识别不了这样的占位符
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  控件 android sqlite 界面