Android 通过在适配器的getView()中单击imageView来更改图像
目标:我想要的是,每当我单击列表项中的图像时,它都会进行更改Android 通过在适配器的getView()中单击imageView来更改图像,android,android-listview,android-imageview,android-adapter,Android,Android Listview,Android Imageview,Android Adapter,目标:我想要的是,每当我单击列表项中的图像时,它都会进行更改 数据库 TextView(随着喜欢次数的增加) 更改图像本身以表示喜欢的列表项 错误:但每当我单击图像时,它都会在数据库中进行更改,并增加相应文本视图的计数 But it change images of other list items as well than of just clicked item. 请使用以下代码帮助我: public class PopularTabRowAdapter extends BaseAdapt
But it change images of other list items as well than of just clicked item.
请使用以下代码帮助我:
public class PopularTabRowAdapter extends BaseAdapter {
List<APIDataModel> videoList;
private Activity activity;
private static LayoutInflater inflater = null;
ImageLoader imageloader;
PopularDataSource datasource;
int pos;
ViewHolder holder;
ListView mListView;
public PopularTabRowAdapter(Activity activity,
List<APIDataModel> videoList, ListView list) {
this.activity = activity;
this.videoList = videoList;
inflater = (LayoutInflater) this.activity
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
imageloader = new ImageLoader(activity);
mListView = list;
this.datasource = new PopularDataSource(activity);
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return videoList.size();
}
@Override
public Object getItem(int arg0) {
// TODO Auto-generated method stub
return videoList.get(arg0);
}
@Override
public long getItemId(int arg0) {
// TODO Auto-generated method stub
return videoList.get(arg0).getID();
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
View row = convertView;
holder = null;
pos = position;
if (row == null) {
row = inflater.inflate(R.layout.popular_tab_custum_row, parent,
false);
holder = new ViewHolder();
holder.descriptiontxt = (TextView) row
.findViewById(R.id.decription_popCustomRow);
holder.listtxt = (TextView) row
.findViewById(R.id.list_popCustomRow);
holder.imageView = (ImageView) row
.findViewById(R.id.image_popCustomRow);
holder.likeImage = (ImageView) row
.findViewById(R.id.likimage_popCustRow);
holder.likeImage.setOnClickListener(likeImageListner);
holder.numbLike = (TextView) row
.findViewById(R.id.noLik_popCustRow);
row.setTag(holder);
} else {
holder = (ViewHolder) row.getTag();
}
holder.descriptiontxt.setText(videoList.get(position).getDecription());
holder.listtxt.setText(videoList.get(position).getList());
imageloader.DisplayImage(ApplicationMain
.getYouTubeVideoImageURL(videoList.get(position).getURL()),
holder.imageView);
holder.numbLike.setText(String.valueOf(videoList.get(position)
.getNumberOfLikes()));
if (videoList.get(position).getLikeStatus() == 1) {
holder.likeImage.setImageResource(R.drawable.like_done);
}
return row;
}
OnClickListener likeImageListner = new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
ViewHolder vh = getViewHolder(v);
int positionVh = mListView.getPositionForView((View) v.getParent());
if (isNetworkAvailable()) {
Toast.makeText(activity, positionVh + "", Toast.LENGTH_LONG)
.show();
if (videoList.get(positionVh).getLikeStatus() == 0) {
HitLike like = new HitLike(positionVh, vh.likeImage,
vh.numbLike);
like.execute();
}
}
}
};
public ViewHolder getViewHolder(View v) {
if (v.getTag() == null) {
return getViewHolder((View) v.getParent());
}
return (ViewHolder) v.getTag();
}
class HitLike extends AsyncTask<Void, Void, String> {
ImageView image;
int position;
TextView text;
public HitLike(int position, ImageView image, TextView text) {
this.position = position;
this.image = image;
this.text = text;
}
@Override
protected void onPreExecute() {
// TODO Auto-generated method stub
super.onPreExecute();
activity.setProgressBarIndeterminateVisibility(true);
}
@Override
protected String doInBackground(Void... params) {
// TODO Auto-generated method stub
ServiceHandler sh = new ServiceHandler();
String responce = sh.makeServiceCall(
ApplicationMain.Instance.getPOPLikeAPI(),
ServiceHandler.POST);
Log.i("PopularRowAdapterResponce", responce);
return responce;
}
@Override
protected void onPostExecute(String result) {
// TODO Auto-generated method stub
super.onPostExecute(result);
activity.setProgressBarIndeterminateVisibility(false);
datasource.open();
if (datasource.addLike(videoList.get(position).getID(), videoList
.get(position).getNumberOfLikes())) {
APIDataModel model = new APIDataModel(videoList.get(position)
.getList(), videoList.get(position).getDecription(),
videoList.get(position).getURL());
model.setNumberOfLikes(videoList.get(position)
.getNumberOfLikes() + 1);
model.setLikeStatus(1);
videoList.set(position, model);
notifyDataSetChanged();
image.setImageResource(R.drawable.like_done);
}
datasource.close();
}
}
private boolean isNetworkAvailable() {
ConnectivityManager connectivityManager = (ConnectivityManager) activity
.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetworkInfo = connectivityManager
.getActiveNetworkInfo();
return activeNetworkInfo != null && activeNetworkInfo.isConnected();
}
static class ViewHolder {
TextView descriptiontxt;
TextView listtxt;
ImageView imageView;
ImageView likeImage;
TextView numbLike;
}
}
公共类PopulartBrowAdapter扩展了BaseAdapter{
列表视频列表;
私人活动;
专用静态充气机=空;
图像加载器;
大众数据源数据源;
int pos;
视窗座;
列表视图;
公共大众浏览器适配器(活动,
列表(视频列表、列表视图列表){
这个。活动=活动;
this.videoList=视频列表;
充气器=(充气器)此活动
.getSystemService(上下文布局\充气机\服务);
imageloader=新的imageloader(活动);
mListView=列表;
this.datasource=新的PopularDataSource(活动);
}
@凌驾
public int getCount(){
//TODO自动生成的方法存根
返回videoList.size();
}
@凌驾
公共对象getItem(int arg0){
//TODO自动生成的方法存根
返回videoList.get(arg0);
}
@凌驾
公共长getItemId(int arg0){
//TODO自动生成的方法存根
返回videoList.get(arg0.getID();
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
//TODO自动生成的方法存根
视图行=转换视图;
holder=null;
pos=位置;
if(行==null){
行=充气机。充气(R.layout.popular\u选项卡\u custum\u行,父级,
假);
holder=新的ViewHolder();
holder.DescriptionText=(TextView)行
.findViewById(R.id.说明);
holder.listtxt=(TextView)行
.findViewById(R.id.list\u popCustomRow);
holder.imageView=(imageView)行
.findViewById(R.id.image\u PoputCustomRow);
holder.likeImage=(ImageView)行
.findviewbyd(R.id.likimage_popCustRow);
holder.likeImage.setOnClickListener(likeImageListner);
holder.numbLike=(TextView)行
.findViewById(R.id.noLik_popCustRow);
row.setTag(支架);
}否则{
holder=(ViewHolder)row.getTag();
}
holder.descriptionText.setText(videoList.get(position.getDescription());
holder.listtxt.setText(videoList.get(position.getList());
imageloader.DisplayImage(ApplicationMain
.getYouTubeVideoImageURL(videoList.get(position).getURL()),
支架(图像视图);
holder.numbLike.setText(String.valueOf(videoList.get)(位置)
.getNumberOfLikes());
if(videoList.get(position.getLikeStatus()==1){
holder.likeImage.setImageResource(R.drawable.like_done);
}
返回行;
}
OnClickListener likeImageListner=新的OnClickListener(){
@凌驾
公共void onClick(视图v){
//TODO自动生成的方法存根
ViewHolder vh=获取ViewHolder(v);
int positionVh=mListView.getPositionForView((视图)v.getParent());
if(isNetworkAvailable()){
Toast.makeText(活动,位置vh+“”,Toast.LENGTH\u LONG)
.show();
if(videoList.get(positionVh.getLikeStatus()==0){
HitLike=新HitLike(位置vh,vh.likeImage,
vh.麻木状);
like.execute();
}
}
}
};
公共视图持有者getViewHolder(视图v){
if(v.getTag()==null){
返回getViewHolder((视图)v.getParent());
}
return(ViewHolder)v.getTag();
}
类HitLike扩展异步任务{
图像视图图像;
内部位置;
文本查看文本;
公共HitLike(int位置、ImageView图像、TextView文本){
这个位置=位置;
这个图像=图像;
this.text=文本;
}
@凌驾
受保护的void onPreExecute(){
//TODO自动生成的方法存根
super.onPreExecute();
activity.SetProgressBarInDeterminateVibility(真);
}
@凌驾
受保护字符串doInBackground(无效…参数){
//TODO自动生成的方法存根
ServiceHandler sh=新的ServiceHandler();
String response=sh.makeServiceCall(
ApplicationMain.Instance.getPOPLikeAPI(),
ServiceHandler.POST);
Log.i(“PopularRowadapterResponse”,response);
返回响应;
}
@凌驾
受保护的void onPostExecute(字符串结果){
//TODO自动生成的方法存根
super.onPostExecute(结果);
activity.SetProgressBarInDeterminateVibility(假);
datasource.open();
if(datasource.addLike(videoList.get(position).getID(),videoList
.get(position.getNumberOfLikes()){
APIDataModel=新的APIDataModel(videoList.get(position)
.getList(),videoList.get(位置).getDecription(),
videoList.get(position.getURL());
model.setNumberOfLikes(videoList.get(位置)
.getNumberOfLikes()+1);
模型:setLikeStatus(1);
视频列表。设置(位置、型号);
notifyDataSetChanged();
setImageResource(R.drawable.like_done);
}
datasource.close();
}
}
专用布尔值isNetworkAvailable(){
ConnectivityManager ConnectivityManager=(ConnectivityManager)活动
.getSystemService(Context.CONNECTIVITY\u服务);
NetworkInfo activeNetworkInfo=connectivityManager
.getActiveNetworkInfo();
返回activeNetworkInfo!=null&&activeNetworkInfo.isConnected();
}
静态类视窗夹{
文本视图描述文本;
文本视图列表;
图像视图图像视图;
ImageView-likeImage;
文本六
image.setImageResource(R.drawable.like_done);
image.setImageResource(R.drawable.like_done);
image.setImageResource(R.drawable.default);