Doch noch ein Problem
.
Ich habe meine Funktion:
1public void refreshnow(){
2
3
4 try{
5 File chatfile = new File(Environment.getExternalStorageDirectory() + "XXXXXXXXX");
6
7 String line = "";
8
9 FileInputStream in = new FileInputStream(chatfile);
10
11 InputStreamReader input = new InputStreamReader(in);
12 BufferedReader buffreader = new BufferedReader(input);
13
14 while((line=buffreader.readLine()) != null){
15
16 String[] lineseperated = line.split(";");
17 setListAdapter(null);
18 String versendername = lineseperated[0];
19 String nachricht = lineseperated[1];
20 String zeit = lineseperated[2];
21
22 HashMap<String, Object> map = new HashMap<String, Object>();
23
24 map.put("versendername", versendername);
25 map.put("zeit", zeit);
26 map.put("nachricht", nachricht);
27
28
29
30
31
32 adapter = new SimpleAdapter(getActivity()
33 .getBaseContext(), chatlist, R.layout.chatitem,
34 new String[] { "versendername" , "zeit" , "nachricht"},
35 new int[] { R.id.chatname, R.id.time , R.id.nachri});
36 chatlist.add(map);
37
38
39
40
41
42 setListAdapter(adapter);
43
44
45
46
47 }
48
49 buffreader.close();
50
51
52
53 }catch(Exception e){
54 Log.e("Error in refresh", e.toString());
55 }
56
57
58
59}
Ich habe nun meinen ListAdapter global definiert.
Problem ist folgendes:
Die txt wird komplett ausgelesen und in den Adapter geschrieben bzw. an die Listview übergeben.
Nun passiert in der refreshnow() genau das selbe nochmal.
Nun kriege ich alle Einträge alle 5 Sekunden doppelt, dann dreifach, dan vierfach usw. aufgrund von:
1final Handler handler = new Handler();
2 handler.postDelayed( new Runnable() {
3
4 @Override
5 public void run() {
6
7 Log.i("tick", "tick");
8
9 refreshnow();
10
11
12 handler.postDelayed( this, 5000);
13
14 }
15 }, 5000 );
Demzufolge liegt es wahrscheinlich an der globalen Adapter Variable.
Wie clear() ich sowas?
Hiiiiilfee!