在调用时不从ArrayList中抽取正确的对象
我有一个程序以字节的形式接收数据流。然后它接收字节并使字符串超出有效字节。然后将这些字符串放置在一个数组列表中,并使用view.setText(arraylistname.get(int index))对数组进行调用,代码如下:messages是一个ArrayList,position是索引,readMessage是一个字符串对象在调用时不从ArrayList中抽取正确的对象
case MESSAGE_READ:
byte[] readBuf = (byte[]) msg.obj;
// construct a string from the valid bytes in the buffer
String readMessage = new String(readBuf, 0, msg.arg1);
// rpmView.setText(readMessage);
messages.add(readMessage);
int position;
position = 0; //position < messages.size();){
int position1;
int position2;
int position3;
int position4;
int position5;
rpmView.setText(messages.get(position));
position1 = position++;
tempView.setText(messages.get(position1));
position2 = position1++;
mphView.setText(messages.get(position2));
position3 = position2++;
gearView.setText(messages.get(position3));
position4 = position3++;
batteryVoltageView.setText(messages.get(position4));
position5 = position4++;
fuelLevelView.setText(messages.get(position5));
的问题是当读取数据流,所有字段/视图显示相同的信息,并没有更新。请帮助我做了很多关于列表视图和arrayadapters研究,但我不希望有一个垂直滚动列表,我希望文本视图随着数据的变化而更新,但布局保持不变,但值不同。
您需要将notifyDataSetChanged()调用到适配器的实例。在手中ler
@ rohit mandiwal我没有使用适配器。你认为这是一个动态变化数组的问题吗?我不想使用listview,但我不明白如何从我的数据流中获取每个项目的新视图。当我尝试使用适配器时,它说我必须使用listview或spinner。 – user544358 2011-03-24 05:42:12
我没有使用适配器。你认为这是一个动态变化数组的问题吗?我不想使用listview,但我不明白如何从我的数据流中获取每个项目的新视图。当我尝试使用适配器时,它说我必须使用listview或spinner。 – user544358 2011-03-24 07:49:30
是的,你应该。 – 2011-03-24 10:03:35
这可能是您使用增量后运算符时遇到的问题。
这是发生:
// Using the post-increment operator.
int position = 0;
int position1, position2, position3;
position1 = position++; // position1 = 0, position = 1
position2 = position1++; // position2 = 0, position1 = 1
position3 = position2++; // position3 = 0, position2 = 1
您可能希望这样:
// Using addition.
int position = 0;
int position1, position2, position3;
position1 = position + 1; // position1 = 1, position = 0
position2 = position1 + 1; // position2 = 2, position1 = 1
position3 = position2 + 1; // position3 = 3, position2 = 2
或者这样:
// Using the pre-increment operator.
int position = 0;
int position1, position2, position3;
position1 = ++position; // position1 = 1, position = 1
position2 = ++position1; // position2 = 2, position1 = 2
position3 = ++position2; // position3 = 3, position2 = 3
@ Tim Mahoney谢谢你的建议。它仍然无法正常工作。你认为我需要在case块之外调用setText方法吗? – user544358 2011-03-24 05:42:54
感谢您的建议。它仍然无法正常工作。你认为我需要在case块之外调用setText方法吗? – user544358 2011-03-24 07:49:01
setText方法应该在大小写块之外工作。我会像Karan说的那样去输出数据到LogCat。 – 2011-03-24 15:35:02
尝试显示messages.l ength,我想你只是增加一个元素。 – Karan 2011-03-24 06:57:05
@Karan我一次只想要一个元素。你对我的后续问题有什么看法? – user544358 2011-03-24 07:48:15
编写一个从0开始到messages.length的循环,并检查消息列表中存在的值。或者添加完整的代码。 – Karan 2011-03-24 08:07:26