2015-05-31 6 views
1

Я пытаюсь увидеть текст из GridView, используя тост, когда я выбрал или щелкнул данные GridView. Я могу видеть позицию, но не знаю, что добавить в текст. Вот код.Как видеть текст в тосте

import android.app.Activity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.AdapterView; 
import android.widget.ArrayAdapter; 
import android.widget.GridView; 
import android.widget.Toast; 

public class MainActivity extends Activity { 
    String [] data = {"a","b", "c","d","e","f", "g","h"}; 
    GridView gdView; 
    ArrayAdapter<String> adapter; 
    String result; 

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

     adapter = new ArrayAdapter<String>(this, R.layout.item, R.id.tvText, data); 

     gdView = (GridView) findViewById(R.id.gdView); 
     gdView.setAdapter(adapter); 


     gdView.setOnItemClickListener(new AdapterView.OnItemClickListener() 
     { 
      public void onItemClick(AdapterView<?> parent, View v, 
            int position, long id) { 
      Toast.makeText(getBaseContext(), position, Toast.LENGTH_SHORT).show(); 
      } 
     }); 
    } 
} 

Может кто-нибудь предложить мне, что мне нужно использовать или где его искать? Спасибо

ответ

0

Параметр int position метода onItemClick() на AdapterView.OnItemClickListener дает:

Положение вида в адаптере.

Смотрите здесь: https://developer.android.com/reference/android/widget/AdapterView.OnItemClickListener.html#onItemClick(android.widget.AdapterView, android.view.View, INT, длинный)

Вы можете использовать это, чтобы извлечь содержимое этого вид с ArrayAdapter с:

adapter.getItem(position) 

Смотрите здесь : https://developer.android.com/reference/android/widget/ArrayAdapter.html#getItem(int)

Это вернет содержимое вашего ArrayAdapter в данной позиции, в вашем случае как String, что вы можете использовать re в переменной, если хотите, или перейдите прямо в Toast.makeText().

+0

Ci_, я не понял, что делать – pavlo

+0

Вы используете это вместо «позиции» в Toast. makeText(). –

+0

Прохладный !!! Это работы, спасибо, я знал, что должен быть легкий ответ. Но я все еще не понимаю, как это работает, но в любом случае спасибо. – pavlo

0

Turn последняя строка в

Toast.makeText(getBaseContext(), String.valueOf(position), Toast.LENGTH_SHORT).show(); 
+1

'String.valueOf (position)' будет возвращать только строковое представление заданного int.' Таким образом, в основном это не даст вам 'Text', который рассматривается как данные вашего' TextView' в вашем элементе списка, но только позиция элемента списка нажмите – Mithun

+0

Насколько я понимаю, проблема в том, что он передает целое число в makeText, и Android разрешает его как идентификатор ресурса. Поэтому, если он хочет увидеть текст, он должен его обернуть. Вопрос немного неясен – Kaerdan

+0

@ Kaerdan. Вы правы, я хочу увидеть текст, который находится в 'String [] data = {" a "," b "," c "," d "," e "," f "," g "," h «};'. Когда я нажимаю ** ** «тосты» показывает ** **, и так далее ... – pavlo

0

Вы могли бы, как показано ниже:

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

    // First Approach 
    // Although your Adapter is fed with <String> data, type check is safe 
    if (parent.getItemAtPosition(position) instanceof String) { 
     String s1 = (String) parent.getItemAtPosition(position); 
    } 

    // 2nd Approach 
    TextView myView = (TextView) view.findViewById(R.id.tvText); 
    if(myView!=null && myView.getText()!=null) { 
     String s2 = myView.getText().toString(); 
    } 

    // 3rd Approach 
    // As mentioned in @ci_ answer in this post 
} 

Надеется, что это помогает!

+0

Mithun unfortunaly не помогает, Если я понял, что вы правильно, то сначала вы хотите попробовать 'if (parent.getItemAtPosition (position) instanceof String) { String s1 = (String) parent.getItemAtPosition (position); } ' и еще один пример использования ' TextView myView = (TextView) view.findViewById (R.id.tvText); if (myView! = Null && myView.getText()! = Null) { Строка s2 = myView.getText().нанизывать(); } ' но ничего не помогает – pavlo

+0

Так вы получаете' s1' и 's2' как null? – Mithun

+0

Да 'toast' shosw пустое сообщение – pavlo