package com.shizhefei.test.view.adapters;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import com.shizhefei.task.Code;
import com.shizhefei.task.TaskHandle;
import com.shizhefei.task.TaskHelper;
import com.shizhefei.task.imp.SimpleCallback;
import com.shizhefei.test.models.enties.Movie;
import com.shizhefei.test.models.enties.MovieAmount;
import com.shizhefei.test.models.task.MovieAmountTask;
import com.shizhefei.view.mvc.demo.R;
/**
* Created by LuckyJayce on 2016/7/20.
*/
public class MoviesAdapter extends ListDataAdapter<Movie> {
private final TaskHelper<MovieAmount> taskHelper;
public MoviesAdapter(TaskHelper<MovieAmount> taskHelper) {
this.taskHelper = taskHelper;
}
@Override
public AbsItemViewHolder onCreateViewHolderHF(ViewGroup viewGroup, int type) {
return new ItemViewHolder(inflate(R.layout.item_movie, viewGroup));
}
private class ItemViewHolder extends AbsItemViewHolder {
private final TextView commentCountTextView;
private final TextView playCountTextView;
private final TextView nameTextView;
private final TextView timeTextView;
private final TextView updateTimeTextView;
public TaskHandle handle;
public ItemViewHolder(View itemView) {
super(itemView);
commentCountTextView = (TextView) itemView.findViewById(R.id.item_movie_commentCount_textView);
playCountTextView = (TextView) itemView.findViewById(R.id.item_movie_playCount_textView);
nameTextView = (TextView) itemView.findViewById(R.id.item_movie_name_textView);
timeTextView = (TextView) itemView.findViewById(R.id.item_movie_time_textView);
updateTimeTextView = (TextView) itemView.findViewById(R.id.item_movie_updateTime_textView);
}
@Override
public void setData(Movie movie, int position) {
nameTextView.setText(movie.getName());
timeTextView.setText(movie.getTime());
if (handle != null) {
handle.cancle();
}
handle = taskHelper.executeCache(new MovieAmountTask(movie.getName()), new SimpleCallback<MovieAmount>() {
@Override
public void onPostExecute(Object task, Code code, Exception exception, MovieAmount movieAmount) {
if (code == Code.SUCCESS) {
commentCountTextView.setText("评论数:" + movieAmount.commentCount);
playCountTextView.setText("播放量:" + movieAmount.playCount);
updateTimeTextView.setText(movieAmount.updateTime);
}
}
}, new MovieAmountTask.CacheConfig(10000) {
@Override
public boolean isUsefulCacheData(Object taskOrDataSource, long requestTime, long saveTime, MovieAmount movieAmount) {
//这里设置显示缓存数据,不设置的话就会显示被回收的ViewHolder的数据了
commentCountTextView.setText("评论数:" + movieAmount.commentCount);
playCountTextView.setText("播放量:" + movieAmount.playCount);
updateTimeTextView.setText(movieAmount.updateTime + " isUsefulCacheData");
return super.isUsefulCacheData(taskOrDataSource, requestTime, saveTime, movieAmount);
}
});
}
}
}