我有一个方法,它从csv文件中读取数据,然后创建一个包含这些数据的对象。这些数据然后用于使用自定义适配器来扩充自定义行视图以填充列表视图。应该显示第一行,然后在将下一行添加到列表之前短暂延迟。Listview没有明显填充
问题是,当调用该方法时,屏幕在总延迟时间内变黑(如果延迟时间为1秒,5条消息= 5秒的黑度),则ListView将显示所有行,而不是显示它一次只填充一个。
playChat方法:
public void playChat(){
View row = null;
int delay = 1000;
try{
InputStream is = this.getAssets().open("chat.csv");
BufferedReader reader = new BufferedReader(new InputStreamReader(is));
String line;
while((line = reader.readLine())!= null){
String[] rowData = line.split(",");
ChatText current = new ChatText();
current.setUser(rowData[0]);
current.setChatText(rowData[1]);
chatTexts.add(current);
playView.invalidateViews();
try {
Thread.sleep(delay);
} catch(InterruptedException ex) {
Thread.currentThread().interrupt();
}
}
}catch (IOException e) {
e.printStackTrace();
}
}
我的自定义适配器:
public ChatAdapter(Context context, ArrayList<ChatText> chatTexts){
super(context, R.layout.chat_layout_left,chatTexts);
this.ctx = context;
}
public View getView(final int pos, View convertView, final ViewGroup parent) {
View row = convertView;
String user = getItem(pos).getUser();
if (null == row){
LayoutInflater inflater = ((Activity)ctx).getLayoutInflater();
holder = new DetailHolder();
holder.imgIcon = (ImageView)row.findViewById(R.id.imgIcon);
holder.txtUser = (TextView)row.findViewById(R.id.txtUser);
holder.txtChatText = (TextView)row.findViewById(R.id.txtChatText);
row.setTag(holder);
}
else{
holder = (DetailHolder)row.getTag();
}
holder.imgIcon.setImageResource(R.drawable.icon_one);
holder.txtUser.setText(getItem(pos).getUser());
holder.txtChatText.setText(getItem(pos).getChatText());
return row;
}
帮助,将不胜感激
很高兴帮助!如果你愿意,请标记为正确:)。 – wblaschko