У меня есть список просмотра Android, который получает новые данные каждую секунду.Теперь я хотел бы прокрутить этот список, но каждый раз, когда поступают новые данные, представление перемещается к первому элементу этого списка.Можно ли изменить поведение так, чтобы представление не перемещалось на первый элемент при поступлении новых данных?
Каждый раз, когда я получаю новые данные, я делаю следующее:
if(arg1.getStringExtra("DATA")!=null){
text = arg1.getStringExtra("DATA").split("\n");
//Erstellt aus den Daten des Traceservices eine Liste bestehend aus Ergebnissen
//Result: <(technName,(min,max,invald,color,numeric),aktuellerWert>
List<Results> results = new ArrayList<Results>();
if(text.length>0){
for(String x:text){
Results r = new Results();
String []res =x.split("&&&");
Values v = dataDictionary.get(res[0]);
r.name=res[0];
r.setV(v);
if(res.length>1){
r.setCurrentValues(res[1]);
}
results.add(r);
}
ResultAdapter adapter = new ResultAdapter(getApplicationContext(), results);
lv.setAdapter(adapter);
}
}
ResultAdapter выглядит следующим образом:
public class ResultAdapter extends BaseAdapter {
private Context context;
private List<Results> resultList;
public ResultAdapter(Context context, List<Results> resultList) {
this.context = context;
this.resultList = resultList;
}
public int getCount() {
return resultList.size();
}
public Object getItem(int position) {
return resultList.get(position);
}
public long getItemId(int position) {
return position;
}
public View getView(int position, View convertView, ViewGroup parent) {
Results r = resultList.get(position);
return new ResultAdapterView(this.context, r);
}
}
Не уверен, что вам это нужно, но ResultAdapterView реализован следующим образом:
class ResultAdapterView extends LinearLayout {
public ResultAdapterView(Context context, Results r) {
super(context);
this.setOrientation(HORIZONTAL);
LinearLayout.LayoutParams resParams;
TextView resName = new TextView(context);
resParams = new LinearLayout.LayoutParams(170, 25);
resParams.setMargins(1, 1, 1, 1);
resName.setPadding(0, 3, 0, 0);
resName.setText(r.v.getFriendlyName());
resName.setTextColor(Color.WHITE);
addView(resName, resParams);
if(r.v!=null){
if (!r.v.isNumeric()) {
TextView currVal = new TextView(context);
currVal.setText(r.currentValue);
currVal.setTextColor(Color.WHITE);
addView(currVal, resParams);
} else {
ResultView rv = new ResultView(context, r);
addView(rv, resParams);
}
}
}
}
Заранее благодарим за помощь.
Поздравления
Кристина