Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/221.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从下到上滚动时,listview可绘制和textview自动更改为原始视图_Java_Android_Listview_Adapter - Fatal编程技术网

Java 从下到上滚动时,listview可绘制和textview自动更改为原始视图

Java 从下到上滚动时,listview可绘制和textview自动更改为原始视图,java,android,listview,adapter,Java,Android,Listview,Adapter,我正在制作一个与社交网络相关的应用程序,像facebook一样,我们的应用程序得到了掌声。我使用listview显示所有帖子,在listview中有一个相对的布局,其中反应为imageview,反应为No,反应为num of reactions,但问题是当用户单击时,如图标的可绘制部分也发生了更改,但当用户向下滚动并返回到上方时,反应图标被激活加载时已更改回页面有人知道如何解决此问题吗 这是我的密码 public class postsAdapter extends ArrayAdapter{

我正在制作一个与社交网络相关的应用程序,像facebook一样,我们的应用程序得到了掌声。我使用listview显示所有帖子,在listview中有一个相对的布局,其中反应为imageview,反应为No,反应为num of reactions,但问题是当用户单击时,如图标的可绘制部分也发生了更改,但当用户向下滚动并返回到上方时,反应图标被激活加载时已更改回页面有人知道如何解决此问题吗

这是我的密码

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
}