2013-07-02 4 views
0

У меня есть вид сетки, и я определил массив из 6 элементов (строки), которые должны отображаться в сетке.Как отображать элементы сетки?

Grid_ViewActivity:

public class Grid_ViewActivity extends Activity { 
    /** Called when the activity is first created. */ 
     //TextView selection; 
     String[] characters=getResources().getStringArray(R.array.characters); 

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


     GridView gv=(GridView)findViewById(R.id.gridView1); 
     //selection=(TextView)findViewById(R.id.selection); 
     ArrayAdapter<String> adapter=new ArrayAdapter<String>(this,R.layout.simple_list_item,characters); 
     gv.setAdapter(adapter); 
     gv.setOnItemClickListener(new OnItemClickListener(){ 



     @Override 
     public void onItemClick(AdapterView<?> parent, View v, int position, long id) { 
      //selection.setText(characters[position]); 
      Toast.makeText(getApplicationContext(), 
       ((TextView) v).getText() , Toast.LENGTH_SHORT).show(); 

     } 
     }); 
} 
    } 

main.xml:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    > 

<GridView 
android:id="@+id/gridView1" 
android:layout_height="fill_parent" 
android:layout_width="fill_parent" 
android:numColumns="auto_fit" 
android:verticalSpacing="20px" 
android:horizontalSpacing="5px" 
android:gravity="center" 
android:columnWidth="40dp" 
android:stretchMode="columnWidth" 

/> 
</LinearLayout> 

simple_listitrm.xml:

<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:id="@+id/tv1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 

    android:textSize="14pt" 
    android:textStyle="bold" 
    /> 
</LinearLayout> 

Я получаю нулевой точки exception.When я запустить это приложение утра Сила закрыта. Где я пошла не так?

+2

пожалуйста, напишите ваш LogCat –

+0

@Shani Goriwal НЕУСТРАНИМОГО ИСКЛЮЧЕНИЕ: главный java.lang.IllegalStateException: ArrayAdapter требует идентификатор ресурса быть TextView, в android.widget.ArrayAdapter. createViewFromResource, на android.widget.ArrayAdapter.getView, на android.widget.AbsListView.obtainView, на android.widget.GridView.onMeasure, на android.view.View.measure , на android.view.ViewGroup.measureChildWithMargins, на android .widget.LinearLayout.measureChildBeforeLayout, на android.widget.LinearLayout.measureVertical – user2523879

+0

, на android.widget.LinearLayout.onMeasure , на android.v iew.View.measure , на android.view.ViewGroup.measureChildWithMargins, на android.widget.FrameLayout.onMeasure, на android.view.View.measure, на android.widget.LinearLayout.measureVertical, на android.widget.LinearLayout.onMeasure, на android.view.View.measure, на android.view.ViewGroup.measureChildWithMargins, – user2523879

ответ

0

Попробуйте это,

String[] characters=getResources().getStringArray(R.array.characters); 

remove эта линия от глобального и положить внутрь onCreate() метода

+0

Не работает. Мой logcat выглядит следующим образом: – user2523879

+0

FATAL EXCEPTION: main java.lang.IllegalStateException: ArrayAdapter требует, чтобы идентификатор ресурса был TextView , на android.widget.ArrayAdapter.createViewFromResource, на android.widget.ArrayAdapter.getView, на android.widget.AbsListView.obtainView, на android.widget.GridView.onMeasure, на android.view.View.measure, на android.view. ViewGroup.measureChildWithMargins, на android.widget.LinearLayout.measureChildBeforeLayout, на android.widget.LinearLayout.measureVertical - – user2523879

+0

, на android.widget.LinearLayout.onMeasure, на android.view.View.measure, на android.view.ViewGroup.measureChildWithMargins , на android.widget.FrameLayout.onMeasure, на android.view.View.measure, на android.widget.LinearLayout.measureVertical, на android.widget.LinearLayout.onMeasure, на android.view.View.measure, на android.view .ViewGroup.measureChildWithMargins, – user2523879

0

Пожалуйста, попробуйте использовать сильфон код.

Изменить simple_listitrm.xml на это.

Изменить oncreate на это.

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    characters = getResources().getStringArray(R.array.months); 
    GridView gv = (GridView) findViewById(R.id.gridView1); 
    // selection=(TextView)findViewById(R.id.selection); 
    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, 
      R.layout.test, characters); 
    gv.setAdapter(adapter); 
    gv.setOnItemClickListener(new OnItemClickListener() { 

     @Override 
     public void onItemClick(AdapterView<?> parent, View v, 
       int position, long id) { 
      // selection.setText(characters[position]); 
      Toast.makeText(getApplicationContext(), 
        ((TextView) v).getText(), Toast.LENGTH_SHORT).show(); 

     } 
    }); 
} 
+0

Не работает даже после смены кода .. Я отправил свой журнал cat .. – user2523879

+0

FATAL EXCEPTION: main java.lang.IllegalStateException: ArrayAdapter требует, чтобы идентификатор ресурса был TextView, на android.widget.ArrayAdapter.createViewFromResource, на android.widget.ArrayAdapter.getView, на android. widget.AbsListView.obtainView, на android.widget.GridView.onMeasure, на android.view.View.measure, на android.view.ViewGroup.measureChildWithMargins, на android.widget.LinearLayout.measureChildBeforeLayout, на android.widget.LinearLayout.measureVertical – user2523879

+0

, at andro id.widget.LinearLayout.onMeasure, на android.view.View.measure, на android.view.ViewGroup.measureChildWithMargins, на android.widget.FrameLayout.onMeasure, на android.view.View.measure, на android.widget.LinearLayout .measureVertical, на android.widget.LinearLayout.onMeasure, на android.view.View.measure, на android.view.ViewGroup.measureChildWithMargins, – user2523879

0

Для использования ArrayAdapter необходимо, чтобы идентификатор ресурса был исключением XML TextView, это означает, что вы не предоставляете то, что ожидает ArrayAdapter. При использовании этого конструктора:

new ArrayAdapter<String>(this, R.layout.a_layout_file, this.file) 

R.Layout.a_layout_file должен быть идентификатор файла макета XML, содержащий только TextView (TextView не может быть обернут кириллице, подобно LinearLayout, RelativeLayout и т.д.!),

что-то вроде этого:

<?xml version="1.0" encoding="utf-8"?> 
<TextView xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="wrap_content" 
// other attributes of the TextView 
/> 

Если вы хотите, чтобы ваш макет список строк, чтобы быть чем-то немного по-другому, то простой TextView виджет использовать этот конструктор:

new ArrayAdapter<String>(this, R.layout.a_layout_file, 
    R.id.the_id_of_a_textview_from_the_layout, this.file) 

, где вы указываете идентификатор макета, который может содержать различные виды, но также должен содержать TextView с и id (третий параметр), который вы передаете в свой ArrayAdapter, чтобы он мог знать, куда помещать строки в строке раскладка.

+0

Привет ... Спасибо.Играйте отображаемые элементы, но при нажатии на элемент мне нужно, чтобы сообщение тоста отображалось так же, как и элемент. Как это сделать? – user2523879

+0

моего код gv.setOnItemClickListener (новый OnItemClickListener() { @Override общественного недействительный onItemClick (AdapterView родителя, Вид v, INT позиции, длинный идентификатор) {// selection.setText (символы [положение]); Toast.makeText (getApplicationContext(), ((TextView) v) .getText(), Toast.LENGTH_SHORT) .show(); } }); – user2523879

+0

@ user2523879: у вас это есть? –

0

Вы должны изменить:

@Override 
    public void onItemClick(AdapterView<?> parent, View v, int position, long id) { 
     //selection.setText(characters[position]); 
     Toast.makeText(getApplicationContext(), 
      characters[position], Toast.LENGTH_SHORT).show(); 

    } 
    }); 
+0

Его работая отлично. Спасибо много !! – user2523879

+0

@ пользователь2523879: ur всегда приветствуется.! –

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