Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/222.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返回相同的数据_Java_Android_Android Listview - Fatal编程技术网

Java ListView返回相同的数据

Java ListView返回相同的数据,java,android,android-listview,Java,Android,Android Listview,我在应用程序中使用Parse进行了一次迷你聊天。我似乎遇到的唯一问题是当我写两次消息时: 正如你在这两张照片中所看到的,这将使两个聊天帖子显示相同的消息。我在想我可能做错了什么?以下是我认为涉及的代码: MainActivity.java public void onClick(View v){ TimelineBaseAdapter myAdapter = new TimelineBaseAdapter(context, myList); lv = (ListView)f

我在应用程序中使用Parse进行了一次迷你聊天。我似乎遇到的唯一问题是当我写两次消息时:

正如你在这两张照片中所看到的,这将使两个聊天帖子显示相同的消息。我在想我可能做错了什么?以下是我认为涉及的代码:

MainActivity.java

public void onClick(View v){

    TimelineBaseAdapter myAdapter = new TimelineBaseAdapter(context, myList);

    lv = (ListView)findViewById(R.id.timelineListView);
    lv.setAdapter(new TimelineBaseAdapter(context, myList));

    EditText et = (EditText)findViewById(R.id.editText);

    String post = et.getText().toString();

    ParseObject po = new ParseObject("Posts");
    po.put("Comments", post);
    po.saveInBackground();

    this.retrievedPost = po.getString("Comments");

    getDataInList();

    myAdapter.notifyDataSetChanged();

}

private void getDataInList(){

   TimelineListData tld = new TimelineListData();
   tld.setPost(retrievedPost);

   myList.add(tld);

}

}
TimelineBaseAdapter.java

public class TimelineBaseAdapter extends BaseAdapter {

ArrayList<TimelineListData> myList = new ArrayList<>();
LayoutInflater inflater;
Context context;

public TimelineBaseAdapter(Context context, ArrayList myList){
    this.myList = myList;
    this.context = context;

    inflater = LayoutInflater.from(this.context);

}

@Override
public View getView(int position, View convertView, ViewGroup parent) {

    TimelineListData tld2 = getItem(position);

    String settingPost = tld2.post;

    MyViewHolder myViewHolder;

    if (convertView == null){

        convertView = inflater.inflate(R.layout.post, null);
        myViewHolder = new MyViewHolder();
        myViewHolder.chatpost = (TextView)convertView.findViewById(R.id.chatpost);
        convertView.setTag(myViewHolder);

    }

    else {

        myViewHolder = (MyViewHolder)convertView.getTag();

    }

    myViewHolder.chatpost.setText(settingPost);

    return convertView;

}

private static class MyViewHolder{
    TextView chatpost;

}
}
我们将非常感谢所有的帮助/建议。提前谢谢

在getView中,更改

 TimelineListData tld2 = new TimelineListData();

从ViewHolder图案的角度来看,以下行

 myViewHolder.chatpost = (TextView)convertView.findViewById(R.id.chatpost);
进入警卫室:

  if (convertView == null)
之后

myViewHolder = new MyViewHolder();

您正在为listview设置两个不同的适配器

TimelineBaseAdapter myAdapter = new TimelineBaseAdapter(context, myList);
改变这个

lv.setAdapter(new TimelineBaseAdapter(context, myList));


感谢您的帮助,但问题是TimelineListData.java中的字符串post是静态的。当我删除static时,它们不再重复相同的数据。

您能将代码减少到解决问题所需的最小值吗?这将使人们更容易发现问题并帮助你。我做了你建议的更改,看起来是这样的:但我似乎仍然得到了相同的结果
TimelineBaseAdapter myAdapter = new TimelineBaseAdapter(context, myList);
lv.setAdapter(new TimelineBaseAdapter(context, myList));
lv.setAdapter(myAdapter);