У меня есть метод, который считывает данные из файла 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