我有一個方法,它從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