2017-01-19 4 views
0

Мое приложение читает сообщения из папки входящих сообщений телефона и отображает их в виде списка в приложении. Я пытаюсь извлечь содержимое сообщения и хранить его в виде строки для использования в будущем. Как мне это сделать? Когда я проверяю log cat, он сообщает мне, что мой контент в представлении списка даже не является строкой, поэтому я пока не могу ее извлечь. Нужно ли сначала конвертировать содержимое в строку? если да, как я могу это сделать?Как извлечь контент из списка и сохранить его как строку?

Это мои текущие коды, как я извлечена и отображаются сообщения из папки входящих в приложение:

public class MainActivity extends AppCompatActivity implements OnClickListener { 

    // GUI Widget 
    Button getSmsButton, viewGoogleMapButton; 
    TextView lblMsg, lblNumber; 
    ListView messageListView; 
    Context ctx = this; 
    String msg; 

    // Cursor Adapter 
    SimpleCursorAdapter adapter; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     // Init GUI Widget 
     getSmsButton = (Button) findViewById(R.id.getSmsButton); 
     getSmsButton.setOnClickListener(this); 

     messageListView = (ListView) findViewById(R.id.messageListView); 

     viewGoogleMapButton = (Button) findViewById(R.id.viewGoogleMapButton); 
     viewGoogleMapButton.setOnClickListener(new OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       Intent startGoogleMap = new Intent(ctx, MapsActivity.class); 
       startActivity(startGoogleMap); 
      } 
     }); 
    }  

    @Override 
    public void onClick(View v) { 
     if (v != getSmsButton) 
      return; 

     // Create Inbox box URI 
     Uri inboxURI = Uri.parse("content://sms/inbox"); 

     // List required columns 
     String[] reqCols = new String[]{"_id", "address", "body"}; 

     // Get Content Resolver object, which will deal with Content Provider 
     ContentResolver cr = getContentResolver(); 

     // Fetch Inbox SMS Message from Built-in Content Provider 
     Cursor c = cr.query(inboxURI, reqCols, null, null, null); 

     // Attached Cursor with adapter and display in listview 
     adapter = new SimpleCursorAdapter(this, R.layout.row, c, 
        new String[]{"body", "address"}, new int[]{ 
        R.id.lblMsg, R.id.lblNumber}); 
     messageListView.setAdapter(adapter); 
    } 
} 

Я попытался положить эти коды, чтобы извлечь содержимое и хранить в виде строки, но он не работает

messageListView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
    @Override 
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
     String data=(String)parent.getItemAtPosition(position); 
     Log.i("msg", data); 
    }}); 
} 

это мой файл row.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:orientation="vertical" android:layout_width="match_parent" 
android:layout_height="match_parent"> 

<TextView 
    android:textAppearance="?android:attr/textAppearanceLarge" 
    android:text="TextView" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/lblMsg"></TextView> 

<TextView 
    android:textAppearance="?android:attr/textAppearanceMedium" 
    android:text="TextView" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:textColor="#00f" 
    android:id="@+id/lblNumber"></TextView> 

+0

Пробовали ли вы parent.getItemAtPosition (позиция) .ToString()? – yakobom

+0

yesss его часть моих кодов –

ответ

0

Получить текст выбранного элемента сюда ваш ListView следующим

messageListView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
      @Override 
      public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 

    //for getting the position 
      String data=messageListView.getItemAtPosition(position).toString(); 

    //for getting the text from selected item 
      TextView textView = (TextView) view.findViewById(R.id.lblMsg); //textView in your listView 
        String text = textView.getText().toString(); 
      Log.i("msg", "Selected item: " + text + " - " + position,); 
      } 
     }); 

    } 
-1

Как только у вас есть объект Cursor, вы можете извлечь данные из него. Пожалуйста, см this

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