Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.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
Android 单击按钮时如何在listView中增加数字_Android_Listview - Fatal编程技术网

Android 单击按钮时如何在listView中增加数字

Android 单击按钮时如何在listView中增加数字,android,listview,Android,Listview,我是Android新手,我正在开发一个应用程序,用户可以喜欢或不喜欢一篇文章,当用户不喜欢文章喜欢数字时——如果用户喜欢数字++ 问题是,当我按下按钮时,它工作,但对其他一些项目不起作用,当我向下或向上滚动时,我会丢失信息,并且它会混合在其他项目上 我在列表视图中使用适配器视图,如下所示: public adapter(Context context, ArrayList<statisticitem> questionaires) { super(context, 0, que

我是Android新手,我正在开发一个应用程序,用户可以喜欢或不喜欢一篇文章,当用户不喜欢文章喜欢数字时——如果用户喜欢数字++

问题是,当我按下按钮时,它工作,但对其他一些项目不起作用,当我向下或向上滚动时,我会丢失信息,并且它会混合在其他项目上

我在列表视图中使用适配器视图,如下所示:

public adapter(Context context, ArrayList<statisticitem> questionaires) {
   super(context, 0, questionaires);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {

   final statisticitem c = getItem(position);    


   if (convertView == null) {
      convertView = LayoutInflater.from(getContext()).inflate(R.layout.custom, parent, false);

   }

   TextView text1 = (TextView) convertView.findViewById(R.id.textView1);
   final TextView text2 = (TextView) convertView.findViewById(R.id.textView2);
   TextView text3 = (TextView) convertView.findViewById(R.id.textView3);
   ImageView like = (ImageView) convertView.findViewById(R.id.imageView1);


   text1.setText(c.getIdQuestion());

   like.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {

           likes++;

           text2.setText("likes :"+likes);


        }
 });




   return convertView;
}

}
公共适配器(上下文、ArrayList问题){
超级(上下文,0,问卷);
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
最终统计员c=获取项目(位置);
if(convertView==null){
convertView=LayoutInflater.from(getContext()).flate(R.layout.custom,parent,false);
}
TextView text1=(TextView)convertView.findViewById(R.id.textView1);
final TextView text2=(TextView)convertView.findViewById(R.id.textView2);
TextView text3=(TextView)convertView.findViewById(R.id.textView3);
ImageView like=(ImageView)convertView.findViewById(R.id.imageView1);
text1.setText(c.getIdQuestion());
like.setOnClickListener(新的OnClickListener(){
@凌驾
公共void onClick(视图v){
喜欢++;
text2.setText(“喜欢:+likes”);
}
});
返回视图;
}
}
我拥有Listview的主要活动:

ListView list1 = (ListView) findViewById(R.id.listView1);
  lists  = new ArrayList<statisticitem>();
  for (int i=0;i<10;i++) {  
  statisticitem s = new statisticitem();
  s.setIdQuestion("Question"+i);
  lists.add(s);
  }

    adapter adapter = new adapter(MainActivity.this, (ArrayList<statisticitem>) lists);
    list1.setAdapter(adapter);


}
ListView list1=(ListView)findViewById(R.id.listView1);
lists=新的ArrayList();

对于(int i=0;i,您可以为like/dislike计数创建一个静态变量

private static int likeCount = 0;

然后更新“喜欢/不喜欢”事件中的值。

您需要使用ViewHolder模式进行此操作。ListView不断循环使用其视图,数据会变得异常。请参考此:


您必须将值存储在正确的位置。我认为您的情况是在统计学家项目中。因此,通过项目位置获取与项目对应的统计学家项目,并将其存储在那里。更新视图时也在那里检索它


viewHolder模式很好,但不能解决您的问题。请考虑您的数据结构。“喜欢”对象是哪一个变量属于?保存它并从何处检索以获得正确的值。它应该与视图无关。

您的类确实应该使用大写字母,这样您就可以看到对象的不同。例如
适配器adaper=new Adapter()
。另外:您是否扩展了某种类型的适配器?在您的情况下,可能是ArrayAdapter?看起来您刚刚定义了自己的类,但这不是自动的适配器,即使您将其称为Adapter。likes变量Instanced在哪里,其作用域是什么?抱歉,这是一个一次性解决方案,不是解决此类问题的正确方法如果你想用HolderView更新帖子,我也面临同样的问题,你能举个例子吗?我用HolderView更新帖子,我也面临同样的问题