Java ListView返回相同的数据
我在应用程序中使用Parse进行了一次迷你聊天。我似乎遇到的唯一问题是当我写两次消息时: 正如你在这两张照片中所看到的,这将使两个聊天帖子显示相同的消息。我在想我可能做错了什么?以下是我认为涉及的代码: MainActivity.javaJava 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
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);