Java 从下到上滚动时,listview可绘制和textview自动更改为原始视图
我正在制作一个与社交网络相关的应用程序,像facebook一样,我们的应用程序得到了掌声。我使用listview显示所有帖子,在listview中有一个相对的布局,其中反应为imageview,反应为No,反应为num of reactions,但问题是当用户单击时,如图标的可绘制部分也发生了更改,但当用户向下滚动并返回到上方时,反应图标被激活加载时已更改回页面有人知道如何解决此问题吗 这是我的密码Java 从下到上滚动时,listview可绘制和textview自动更改为原始视图,java,android,listview,adapter,Java,Android,Listview,Adapter,我正在制作一个与社交网络相关的应用程序,像facebook一样,我们的应用程序得到了掌声。我使用listview显示所有帖子,在listview中有一个相对的布局,其中反应为imageview,反应为No,反应为num of reactions,但问题是当用户单击时,如图标的可绘制部分也发生了更改,但当用户向下滚动并返回到上方时,反应图标被激活加载时已更改回页面有人知道如何解决此问题吗 这是我的密码 public class postsAdapter extends ArrayAdapter{
public class postsAdapter extends ArrayAdapter{
private final Context context;
private final ArrayList<posts>posts;
public postsAdapter(Context context,ArrayList<posts> posts) {
super(context, -1,posts);
this.context = context;
this.posts=posts;
}
static class ViewHolder {
ImageView pic,reactions,post_image,thoughts,share;
RelativeTimeTextView time;
TextView reactionsno,thoughtsno,shareno,name,rpost,profileUrl;
RelativeLayout lay,buttonpanel;
}
ArrayList<posts>postlist=new ArrayList<posts>();
ArrayList<TextView>reactionslist=new ArrayList<TextView>();
posts post;
@Override
public View getView(final int position, View view, ViewGroup parent) {
final ViewHolder vie;
vie = new ViewHolder();
LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
view = inflater.inflate(R.layout.posts, null);
post=posts.get(position);
postlist.add(post);
vie.pic=(ImageView)view.findViewById(R.id.posts_pic);
vie.name= (TextView) view.findViewById(R.id.posts_name);
vie.lay=(RelativeLayout)view.findViewById(R.id.mainlay);
vie.time=(RelativeTimeTextView)view.findViewById(R.id.time);
vie.rpost=(TextView)view.findViewById(R.id.posts_text);
vie.reactionsno=(TextView)view.findViewById(R.id.reactionsno);
vie.thoughtsno=(TextView)view.findViewById(R.id.thoughtsno);
vie.shareno=(TextView)view.findViewById(R.id.shareno);
vie.post_image=(ImageView)view.findViewById(R.id.post_image);
vie.reactions=(ImageView)view.findViewById(R.id.reactions);
vie.thoughts=(ImageView)view.findViewById(R.id.thoughts);
vie.share=(ImageView)view.findViewById(R.id.share);
vie.buttonpanel=(RelativeLayout)view.findViewById(R.id.bottompanel);
vie.name.setText(post.getName());
vie.rpost.setText(post.getPost());
vie.reactionsno.setText(""+post.getReactions());
vie.thoughtsno.setText(""+post.getThoughts());
vie.shareno.setText(""+post.getSeen());
RelativeLayout.LayoutParams params=(RelativeLayout.LayoutParams)vie.buttonpanel.getLayoutParams();
RequestOptions req = new RequestOptions();
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = new Date();
final String atime=dateFormat.format(date);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
try {
Date mDate = sdf.parse(post.getTime());
long timeInMilliseconds = mDate.getTime();
vie.time.setReferenceTime(timeInMilliseconds);
} catch (ParseException e) {
e.printStackTrace();
}
if(post.getHasPic()==1){
params.addRule(RelativeLayout.BELOW,R.id.posts_text);
vie. lay.removeView( vie.post_image);
}
else{
Glide.with(context)
.load(Social.URL + "posts/" + post.getPicUrl() + ".png")
.apply(req.diskCacheStrategy(DiskCacheStrategy.AUTOMATIC))
.into( vie.post_image);
}
if(post.liked==1){
vie.reactions.setImageResource(R.drawable.happy);
vie.reactions.setTag("clap");
}
else if(post.liked==2){
vie.reactions.setImageResource(R.drawable.clap1);
vie.reactions.setTag("clap1");
}
Glide
.with(context)
.load(Social.URL + "profilepics/" + post.getToken() + ".png")
.apply(req.diskCacheStrategy(DiskCacheStrategy.AUTOMATIC))
.apply(RequestOptions.circleCropTransform())
.into( vie.pic);
final postDb db=new postDb(context,"posts");
vie.reactions.setOnClickListener( new View.OnClickListener() {
@Override
public void onClick(View iew) {
new animationHelper().Blink(iew);
ImageView view=(ImageView)iew;
if(view.getTag().equals("clap")){
view.setTag("clap1");
postlist.get(position).setReactions(postlist.get(position).getReactions()+ 1);
db.update(postlist.get(position).getReactions(),2,postlist.get(position).getPicUrl());
vie.reactionsno.setText(""+postlist.get(position).getReactions());
view.setImageResource(R.drawable.clap1);
}
else{
postlist.get(position).setReactions(postlist.get(position).getReactions()- 1);
view.setImageResource(R.drawable.happy);
db.update(postlist.get(position).getReactions(),1,postlist.get(position).getPicUrl());
vie.reactionsno.setText(""+postlist.get(position).getReactions());
view.setTag("clap");
}
}
});
return view;
}}
公共类postsAdapter扩展了ArrayAdapter{
私人最终语境;
私有最终阵列柱;
公共postsAdapter(上下文、数组列表帖子){
超级(上下文,-1,帖子);
this.context=上下文;
这个.posts=posts;
}
静态类视窗夹{
图片查看图片,反应,后图片,想法,分享;
RelativeTimeExtView时间;
TextView反应编号、想法编号、共享编号、名称、rpost、配置文件URL;
相对位置、按钮面板;
}
ArrayListpostlist=新的ArrayList();
ArrayListActionsList=新的ArrayList();
员额;
@凌驾
公共视图getView(最终整数位置、视图视图、视图组父视图){
最终持票人vie;
vie=新的视图持有者();
LayoutFlater充气器=(LayoutFlater)上下文
.getSystemService(上下文布局\充气机\服务);
视图=充气机。充气(R.layout.posts,空);
post=posts.get(位置);
postlist.add(post);
vie.pic=(ImageView)view.findViewById(R.id.posts\u pic);
vie.name=(TextView)view.findViewById(R.id.posts\u name);
vie.lay=(RelativeLayout)view.findViewById(R.id.mainlay);
vie.time=(RelativeTimeTextView)view.findViewById(R.id.time);
vie.rpost=(TextView)view.findViewById(R.id.posts\u text);
vie.reactionsno=(TextView)view.findViewById(R.id.reactionsno);
vie.thoughtsno=(TextView)view.findViewById(R.id.thoughtsno);
vie.shareno=(TextView)view.findViewById(R.id.shareno);
vie.post_image=(ImageView)view.findViewById(R.id.post_image);
vie.reactions=(ImageView)view.findViewById(R.id.reactions);
vie.thinks=(ImageView)view.findViewById(R.id.thinks);
vie.share=(ImageView)view.findViewById(R.id.share);
vie.buttonpanel=(RelativeLayout)view.findViewById(R.id.bottompanel);
vie.name.setText(post.getName());
vie.rpost.setText(post.getPost());
vie.reactionsno.setText(“+post.getReactions());
vie.thoughtsno.setText(“+post.getThoughts());
vie.shareno.setText(“+post.getSeen());
RelativeLayout.LayoutParams params=(RelativeLayout.LayoutParams)vie.buttonpanel.getLayoutParams();
RequestOptions req=新的RequestOptions();
SimpleDateFormat dateFormat=新的SimpleDateFormat(“yyyy-MM-dd HH:MM:ss”);
日期=新日期();
最终字符串atime=dateFormat.format(日期);
SimpleDataFormat sdf=新的SimpleDataFormat(“yyyy-MM-dd HH:MM:ss”);
试一试{
datemdate=sdf.parse(post.getTime());
long-timeinmillizes=mDate.getTime();
vie.time.setReferenceTime(时间单位为毫秒);
}捕获(解析异常){
e、 printStackTrace();
}
if(post.getHasPic()==1){
参数addRule(下面的RelativeLayout,R.id.posts_文本);
vie.lay.removeView(vie.post_图像);
}
否则{
带(上下文)滑动
.load(Social.URL+“posts/”+post.getPicUrl()+“.png”)
.apply(请求diskCacheStrategy(diskCacheStrategy.AUTOMATIC))
.进入(即后期图像);
}
if(post.like==1){
vie.reactions.setImageResource(R.drawable.happy);
vie.反应。设置标签(“clap”);
}
else if(post.liked==2){
vie.reactions.setImageResource(R.drawable.clap1);
vie.反应。设置标签(“clap1”);
}
滑翔
.与(上下文)
.load(Social.URL+“profilepics/”+post.getToken()+“.png”)
.apply(请求diskCacheStrategy(diskCacheStrategy.AUTOMATIC))
.apply(RequestOptions.circleCropTransform())
.进入(vie.pic);
final postDb=新的postDb(上下文,“posts”);
vie.reactions.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图视图){
新建animationHelper().Blink(视图);
ImageView视图=(ImageView)视图;
if(view.getTag().equals(“clap”)){
view.setTag(“clap1”);
postlist.get(position).setReactions(postlist.get(position).getReactions()+1);
更新(postlist.get(position.getReactions(),2,postlist.get(position.getPicUrl());
vie.reactionsno.setText(“+postlist.get(position.getReactions());
view.setImageResource(R.drawable.clap1);
}
否则{
postlist.get(position).setReactions(postlist.get(position).getReactions()-1);
view.setImageResource(R.drawable.happy);
db.update(postlist.get(position.getReactions(),1,postlist.get(position.getPicUrl());
vie.reactionsno.setText(“+postlist.get(position.getReactions());
view.setTag(“clap”);
}
}
});
返回视图;
}}
Onclick方法工作正常,但当页面滚动时,然后在Onclick中将drawable设置为original drawable,您没有更新全局列表“posts”。希望有帮助!成功了!谢谢兄弟
public View getView(int position, View convertView, ViewGroup parent)
{
View view = convertView;
if (view == null)
{
LayoutInflater vi = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
view = vi.inflate(R.layout. posts, null);
}
//todo
}