自定义Adapter写法记录

本文介绍了一个自定义的Android视屏列表适配器的具体实现方法。该适配器使用BaseAdapter并结合LayoutInflater来填充视屏信息,包括缩略图、视屏名称及大小等属性。

 

package com.example.coolvidaoplayer;

import java.util.List;
import java.util.Map;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;

public class VidaoListAdapter extends BaseAdapter {
	private LayoutInflater videoListInflater;
	private List<Map<String,Object>>videoList;
	public VidaoListAdapter(Context context,List<Map<String,Object>>list)
	{
		this.videoListInflater=LayoutInflater.from(context);
		this.videoList=list;
	}
	static class ViewHolder{
		ImageView ivVideoThumbnail;
		TextView tvVideoName;
		TextView tvVideoSize;
	}

	@Override
	public int getCount() {
		// TODO Auto-generated method stub
		if(videoList!=null)
		{
			return videoList.size();
		}else
		return 0;
	}

	@Override
	public Object getItem(int pos) {
		// TODO Auto-generated method stub
		return videoList.get(pos);
	}

	@Override
	public long getItemId(int id) {
		// TODO Auto-generated method stub
		return id;
	}

	@Override
	public View getView(int position, View convertView, ViewGroup parent) {
		// TODO Auto-generated method stub
		ViewHolder videoHolder=null;
		if(convertView==null)
		{
			videoHolder=new ViewHolder();
			convertView=videoListInflater.inflate(R.layout.list_item_vidaoinfo, null);
			videoHolder.ivVideoThumbnail=(ImageView)convertView.findViewById(R.id.iv_vidao_thumbnail);
			videoHolder.tvVideoName=(TextView)convertView.findViewById(R.id.tv_vidao_name);
			videoHolder.tvVideoSize=(TextView)convertView.findViewById(R.id.tv_vidao_size);
			videoHolder.ivVideoThumbnail.setBackgroundResource((Integer)videoList.get(position).get("videothumbnail"));
			videoHolder.tvVideoName.setText((String)videoList.get(position).get("videoname"));
			videoHolder.tvVideoSize.setText((String)videoList.get(position).get("videosize"));
			convertView.setTag(videoHolder);
		}
		else
		{
			videoHolder=(ViewHolder)convertView.getTag();
		}
		
		return convertView;

	}

}
<think>嗯,用户询问的是关于canal.adapter-1.1.8版本中conf/application.yml的配置方法。虽然用户提供了三条参考资料,但只有引用[1]部分相关,其他两条明显是不同场景的配置片段。 用户上次没有提问记录,不过从当前问题能看出ta正在部署Canal Adapter时遇到配置问题。用户特意强调版本号1.1.8,说明可能遇到了版本差异导致的配置问题。ta应该需要完整的配置结构说明,而不仅仅是某个字段的修正。 我手头有Canal Adapter 1.1.8官方配置模板的记忆: - 配置文件主要分server、canal.conf、srcDataSources三大部分 - 用户引用[1]提到的srcDataSources配置段确实是常见出错点,很多人会漏改defaultDS - 需要提醒用户注意1.1.8特有的rabbitmq/producer配置项,这个在早期版本不存在 用户可能遇到的痛点包括: 1 数据源名称defaultDS未修改导致连接异常 2 zookeeper地址格式错误(必须带端口) 3 es映射配置路径错相对位置 4 忘记同步修改instance.properties 应该用分层方式展示配置结构,把核心参数如server.port、canal.conf.mode放在最前面。对于容易出错的srcDataSources部分要特别标注示例写法,最后补充版本差异提醒——比如1.1.5之前不支持rabbitmq配置,这点对升级用户很重要。 考虑到用户正在操作配置文件,最后补充两个实用建议:YAML缩进校验工具和配置热更新方法。这样既解决当前问题也预防后续出错。 </think>以下是针对 `canal.adapter-1.1.8` 中 `conf/application.yml` 的配置方法详解(基于官方文档和常见实践): ### 核心配置结构 ```yaml server: port: 8081 # Adapter服务端口 spring: jackson: date-format: yyyy-MM-dd HH:mm:ss time-zone: GMT+8 canal.conf: mode: tcp # 可选 tcp/kafka/rocketMQ/rabbitMQ canalServerHost: 127.0.0.1:11111 # Canal Server地址 batchSize: 500 syncBatchSize: 1000 retries: 0 timeout: 86400000 srcDataSources: # 源数据库配置 defaultDS: # 数据源别名(必须与adapter映射配置对应) url: jdbc:mysql://127.0.0.1:3306/test?useUnicode=true username: root password: 123456 canalAdapters: groups: - groupId: g1 outerAdapters: - name: logger # 日志输出适配器 - name: es7 # ES适配器 hosts: 127.0.0.1:9200 properties: cluster.name: elasticsearch ``` --- ### 关键配置项说明 1. **数据源配置 (`srcDataSources`)** - 修改 `defaultDS` 为实际数据源(参考引用[1]) ```yaml srcDataSources: mydb: # 自定义数据源名 url: jdbc:mysql://10.0.0.1:3306/mydb username: user password: pass ``` 2. **Canal Server 连接** ```yaml canalServerHost: 192.168.1.100:11111 # 指向Canal-Server实例 ``` 3. **输出适配器示例 (ES7)** ```yaml outerAdapters: - name: es7 hosts: es-node1:9200,es-node2:9200 properties: security.auth: user:password # ES认证 cluster.name: prod-cluster ``` 4. **驱动依赖处理** 确保驱动包版本匹配(参考引用[3]): ```bash # 替换lib目录下mysql驱动(版本需与数据库一致) ln -s /path/to/mysql-connector-java-8.0.28.jar ./lib/ ``` --- ### 配置文件位置 ``` canal.adapter-1.1.8 ├── bin ├── conf │ ├── application.yml # 主配置 │ ├── es7 # ES映射目录 │ │ └── my_index.yml │ └── hbase └── lib ``` --- ### 常见问题解决 1. **"没有中到defaultDS"错误** - 检查 `srcDataSources` 中的数据源名称是否与Adapter映射文件中的 `dataSourceKey` 一致 - 确认数据库驱动已正确放置(引用[3]) 2. **热更新配置** 修改 `application.yml` 后需重启Adapter: ```bash ./bin/stop.sh && ./bin/startup.sh ``` 3. **多数据源场景** ```yaml srcDataSources: db1: url: jdbc:mysql://db1:3306/order db2: url: jdbc:oracle:thin:@db2:1521:orcl ``` > 注:详细配置参考 [Canal Adapter GitHub Wiki](https://github.com/alibaba/canal/wiki/Canal-Adapter)[^1] --- ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值