Как вставить проанализированные данные XML в TextView - PullRequest
2 голосов
/ 17 февраля 2011

В данный момент мой анализатор анализирует данные и сохраняет их в виде списка, который можно легко отобразить.

Однако я хочу использовать textView для отображения этих данных, но я не знаю, как.

Вот код, который работает с использованием списка:

public class StatisticsScreen extends ListActivity{

private List<Message> messages;
ListView lv;
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.statisticsscreen);    
    loadFeed();            
    lv = (ListView) findViewById(android.R.id.list);

    private void loadFeed() {
    try{
        BaseFeedParser parser = new BaseFeedParser();
        messages = parser.parse();
        List<String> titles = new ArrayList<String>(messages.size());
        for (Message msg : messages){
            titles.add(msg.getTemperature());
            titles.add(msg.getRain());
            titles.add(msg.getWind());
        }
        ArrayAdapter<String> adapter = 
            new ArrayAdapter<String>(this, R.layout.xmldatarow,titles);
        getListView().addHeaderView(View.inflate(this, R.layout.xmllayout, null));
        this.setListAdapter(adapter);
    } catch (Throwable t){
        Log.e("AndroidNews",t.getMessage(),t);
    }       
}

Итак, как я уже сказал, это прекрасно работает, но я хочу использовать TextView вместо ListView для хранения / отображения данных.

Любой совет?

РЕДАКТИРОВАТЬ: ЗДЕСЬ РЕШЕНИЕ

Вот обновленный код, который работает сейчас:

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.statisticsscreen);        
    tv = (TextView) findViewById(R.id.xmltextview);      
    tv1 = (TextView) findViewById(R.id.xmltextview1);
    tv2 = (TextView) findViewById(R.id.xmltextview2);
    loadFeed();

    private void loadFeed() {
      try{
        BaseFeedParser parser = new BaseFeedParser();
        messages = parser.parse();
        for (Message msg : messages){
            tv.setText(msg.getTemperature());
            tv1.setText(msg.getRain());
            tv2.setText(msg.getWind());
         }           
      } catch (Throwable t){
         Log.e("Weather",t.getMessage(),t);
      }       
    }
 }

Ответы [ 2 ]

2 голосов
/ 17 февраля 2011

Ваш код не может работать, потому что вы всегда заменяете текстовое представление последней информацией о массаже. Вы должны сделать это:

public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.statisticsscreen);        
  tv = (TextView) findViewById(R.id.xmltextview);      
  loadFeed();

  private void loadFeed() {
    try {
      BaseFeedParser parser = new BaseFeedParser();
      messages = parser.parse();
      StringBuilder builder = new StringBuilder();
      for (Message msg : messages){
        builder.append(msg.getTemperature());
        builder.append(",");
        builder.append(msg.getRain());
        builder.append(",");
        builder.append(msg.getWind());
        builder.append("\n");
      }
      tv.setText(builder.toString());
    } catch (Throwable t){
      Log.e("AndroidNews",t.getMessage(),t);
    }
  }
}       
1 голос
/ 17 февраля 2011

Вам нужно каким-то образом отформатировать данные, а затем использовать метод TextView setText(). Если вам нужно HTML-подобное форматирование, вам пригодится метод android.text.Html.fromHtml().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...