Android 从CountDownTimer onTick方法更新文本视图
我使用了一个倒计时显示剩余的时间内视图持有人文本视图。我的代码结构如下:Android 从CountDownTimer onTick方法更新文本视图,android,android-adapter,Android,Android Adapter,我使用了一个倒计时显示剩余的时间内视图持有人文本视图。我的代码结构如下: Class Demo extends ArrayAdapter<ListItem> { ListItemHolder holder=new ListItemHolder(); @Override public View getView(int position, View convertView, ViewGroup par
Class Demo extends ArrayAdapter<ListItem>
{
ListItemHolder holder=new ListItemHolder();
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View row = convertView;
holder.tv= (TextView)row.findViewById(R.id.tv_timer);
//Starting the countdown timer
return row;
}
static class ListItemHolder
{
TextView tv;
............
}
public class MyCount extends CountDownTimer{
public MyCount(long millisInFuture, long countDownInterval) {
super(millisInFuture, countDownInterval);
}
@Override
public void onFinish() {
}
@Override
public void onTick(long millisUntilFinished) {
holder.tv.setText("time");
}
}
}
类演示扩展了ArrayAdapter
{
ListItemHolder=新的ListItemHolder();
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
视图行=转换视图;
holder.tv=(TextView)row.findViewById(R.id.tv\u计时器);
//启动倒计时
返回行;
}
静态类ListItemHolder
{
文本视图电视;
............
}
公共类MyCount扩展了倒计时{
公共MyCount(长百万未来,长倒计时间隔){
超级(毫秒未来,倒计时间隔);
}
@凌驾
公共无效onFinish(){
}
@凌驾
公共void onTick(长毫秒未完成){
holder.tv.setText(“时间”);
}
}
}
当我尝试将onTick值设置为列表项持有者内的文本视图时,应用程序抛出空指针异常。有人能指出我做错了什么吗
提前感谢,
TimsongetView中的convertView可能为空
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View row = convertView;
if (row == null) {
LayoutInflater vi = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
row = vi.inflate(R.layout.your layout, null);
}
holder.tv= (TextView)row.findViewById(R.id.tv_timer);
//Starting the countdown timer
return row;
}
您需要检查convertView是否为空,如果为空,则对视图进行充气
public View getView(int position, View convertView, ViewGroup parent) {
View row = convertView;
if(row==null){
holder = new ListItemHolder();
LayoutInflater inflater = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
row = inflater.inflate(R.layout.your_layout, null);
holder.tv= (TextView)row.findViewById(R.id.tv_timer);
row.setTag(holder);
}else{
holder = (ListItemHolder) row.getTag();
}
//Starting the countdown timer
return row;
}
您尚未初始化一个变量。
holder
或tv
。您是否初始化了tv变量?抱歉,我没有包含代码,请查找已编辑的代码嗨,丹尼尔,谢谢您的建议。异常发生于onTick方法,而不是getView。我正在使用上面相同的代码…我知道,但问题是onTick()上的textview为null,因为您尚未在getView()上初始化它,因为row.findViewById(R.id.tv_timer);可能正在返回null。