2013-09-28 3 views
0

Я делаю приложение в android. Приложение сохраняет цитату или выражение в текстовом поле. Пользователь имеет возможность изменить этот текст. Но я хотел, чтобы, когда цитата появилась в TextView, она вообще не появилась. Я хотел, чтобы появились только первые 5 символов цитаты. Я пытаюсь сделать это с помощью подстроки, но когда я открываю TextView, ничего не появляется. TextView пуст. Что я могу сделать?Текстовое поле пусто, когда я использую подстроку

Может ли кто-нибудь мне помочь, пожалуйста.

Заранее спасибо.

Это линия, где я использую подстрока:

ListAdapter adapter = new SimpleAdapter(Quote.this,quoteList, R.layout.quote_entry, new String[] { "quoteId", "textQuote".substring(0, 4)}, new int[] {R.id.quoteId, R.id.textQuote}); 

А вот весь класс

package com.example.prova1; 

/**This class is the page of quotes*/ 

import java.util.ArrayList; 
import java.util.HashMap; 
import android.app.ListActivity; 
import com.example.prova1.Database; 
import com.example.prova1.EditQuote; 
import com.example.prova1.AddQuote; 
import com.example.prova1.R; 
import android.os.Bundle; 
import android.content.Intent; 
import android.view.View; 
import android.widget.AdapterView; 
import android.widget.ListAdapter; 
import android.widget.TextView; 
import android.widget.AdapterView.OnItemClickListener; 
import android.widget.SimpleAdapter; 
import android.widget.ListView; 


public class Quote extends ListActivity { 

Intent intent; 
TextView quoteId; 

Database quotedatabase = new Database(this); 

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    setContentView(R.layout.quote_main);//define that the interface used is quote_main 

    //Store data from database in an array list 

    ArrayList<HashMap<String, String>> quoteList = quotedatabase.getAllItems(); 

    //Check if there are quotes to display 
    if(quoteList.size()!=0) { 

    ListView listView = getListView(); 
    listView.setOnItemClickListener(new OnItemClickListener() { 

    public void onItemClick(AdapterView<?> parent, View view,int position, long id) { 


    quoteId = (TextView) view.findViewById(R.id.quoteId); 

    String itemIdValue = quoteId.getText().toString(); 

    Intent theIndent = new Intent(getApplication(),ShowQuote.class); 


    theIndent.putExtra("quoteId", itemIdValue); 

    finish(); 

    startActivity(theIndent); 

     } 
    }); 

    // Here we use ListAdapter as a bridge between ListView and the data of ListView 

    ListAdapter adapter = new SimpleAdapter(
      Quote.this,quoteList, 
      R.layout.quote_entry, 
      new String[] { 
         "quoteId", 
         "textQuote".substring(0, 4) 
         }, 
      new int[] { 
         R.id.quoteId, 
         R.id.textQuote} 
        ); 

    setListAdapter(adapter); 


    } 
} 
} 
+0

Может ли кто-нибудь помочь мне с этой задачей? – user2804038

+0

Зачем нужна подстрока в строковом литерале? Почему бы просто не закодировать строку, которую вы хотите: «текст»? – NormR

ответ

0

Я не установлен SDK в данный момент, чтобы проверить свой код, но У меня есть пара предложений.

Первый: попробуйте код без подстроки и посмотрите, работает ли это. Во-вторых: Если это сработает, переместите операцию подстроки в строку до и передайте результат в SimpleAdapter.

Я говорю это, потому что у меня такое чувство, что подстрока на самом деле не ваша проблема. И это просто хороший способ проверить это.

Я также проверил бы ваш макет «R.layout.quote_entry» и удостоверился, что с ним ничего странного не происходит. Например, у вас есть «R.id.textQuote», фактически «ушедший», а другой TextView визуально показан и т. Д. У меня была эта проблема один раз. У меня было два поля EditText, и только один из них показывался, поэтому Activity выглядела правильно, но не вела себя правильно.

+0

Код отлично работает без подстроки. Даже если я перемещаю операцию подстроки в строке раньше, она не работает. Я проверил R.layout.quote_entry, и все в порядке с этим. – user2804038

+0

У вас есть какая-то другая идея? – user2804038

+0

Да, на самом деле, вытащить String [] за пределами объявления SimpleAdapter, тогда похоже, что существует проблема с созданием анонимной строки [] и подстроки(), я не уверен, почему это «неправильно» , но я думаю, что это связано с тем, как String является неизменным. Поэтому строка подстроки() строки пытается изменить значение строки в массиве. http://docs.oracle.com/javase/tutorial/java/nutsandbolts/arrays.html – mawalker

Смежные вопросы