2013-11-09 13 views
33

まずは、あなたの答えをありがとう!私はAndroidの新機能ですが、これは私の問題です。xmlファイルからリストビューへのAndroidの文字列配列

文字列配列の値をlistviewに入れたいと思います。

private String [] fiilliste={"A","Ağlamak","Almak","B","Bulmak"}; 
ArrayAdapter<String> adapter; 
adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, fiilliste); 
vlist.setAdapter(adapter); 

しかし、私は文字列の配列のXMLファイルを使用したい:

プログラムは、これらのコードで正常に動作します。これは私のxmlファイルです:

<?xml version="1.0" encoding="utf-8"?> 
<resources> 

    <string-array name="fi"> 
     <item>A</item> 
     <item>Almak</item> 
     <item>Anlamak</item> 
     <item>Anlasmak</item> 
     <item>Anlatmak</item> 
     <item>Ayrilmak</item> 
    </string-array> 

</resources> 

と私は、次のコードでのコードを変更し、現在のプログラムが動作しません。

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

この問題を解決するお手伝いをしてもらえますか?ありがとうございました!

アクティビティコード:

package com.gazi.tezproje; 

import android.app.ActionBar; 
import android.app.Activity; 
import android.os.Bundle; 
import android.text.Editable; 
import android.text.TextWatcher; 
import android.view.Menu; 
import android.view.MenuInflater; 
import android.view.MenuItem; 
import android.view.View; 
import android.widget.AdapterView; 
import android.widget.AdapterView.OnItemClickListener; 
import android.widget.ArrayAdapter; 
import android.widget.EditText; 
import android.widget.ImageButton; 
import android.widget.ListView; 
import android.widget.Toast; 

public class verbs extends Activity { 

    public boolean onCreateOptionsMenu(Menu menu) { 
     ActionBar bar=getActionBar(); 
     bar.setDisplayHomeAsUpEnabled(true); 

     MenuInflater menu1 = getMenuInflater(); 
     menu1.inflate(R.menu.info, menu); 


     return super.onCreateOptionsMenu(menu); 
    } 

    public boolean onOptionsItemSelected(MenuItem item) { 
     switch (item.getItemId()) { 
      case R.id.menuinfo: 
      Toast.makeText(getApplicationContext(),getString(R.string.verbs), Toast.LENGTH_LONG).show(); 
      break; 
      case android.R.id.home: 
      finish(); 
      break; 
     } 
     return false; 
    } 

    private ListView vlist; 
    EditText ara; 

    String [] fiilliste= getResources().getStringArray(R.array.fi); 
    ArrayAdapter<String> adapter; 

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

     vlist=(ListView)findViewById(R.id.listView1); 

     adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, fiilliste); 

     vlist.setAdapter(adapter); 
     ara = (EditText) findViewById(R.id.editText1); 
     vlist.setTextFilterEnabled(true); 
     ara.addTextChangedListener(new TextWatcher(){ 
      public void onTextChanged(CharSequence cs, int arg1, int arg2, int arg3) { 
       /* When user changed the Text */ 
       verbs.this.adapter.getFilter().filter(cs); 
      } 

      @Override 
      public void afterTextChanged(Editable arg0) { 
       /*TODO Auto-generated method stub*/ 
      } 

      @Override 
      public void beforeTextChanged(CharSequence arg0, int arg1, int arg2, 
       int arg3) { 
       /*TODO Auto-generated method stub*/ 
      } 
     }); 
    } 
} 
+0

に文字列の配列を定義し、あなたの.xmlファイルから&をandroid:entriesを削除するには、完全な、あなたはこの 'String []型fiilliste =を持っていないアクティビティコードを投稿することができますgetResources()。getStringArray(R.array.fi); '? – Raghunandan

+0

今投稿をチェックしてみてください – Raghunandan

答えて

49

変更は私はあなたがstrings.xmlで文字列配列FIを持っていると仮定します。

おそらくNullPointerExceptionがあります。 getResources()のアクティビティコンテキストが必要です。それでonCreateの中に移動してください。

+1

ありがとうございました!今それは動作します! – Johnny

0

あなたの問題は、コードを作成したり、他の関数で上に置くべきであるということです。

String [] fiilliste; 
ArrayAdapter<String> adapter; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.verbs); 
    fiilliste = getResources().getStringArray(R.array.fi); 
    // move this in onCreate 

しないよう、静的変数

+0

コードに静的変数がありません投稿された – Raghunandan

+0

私は値が実行時に得られないことを意味しました – user2558461

16

ここは私がやったことです。私は

<resources> 
<string-array name="numbers"> 
    <item>1</item> 
    <item>2</item> 
    <item>3</item> 
    <item>4</item> 
    <item>5</item> 
    <item>6</item> 
    <item>7</item> 
    <item>8</item> 
    <item>9</item> 
    <item>10</item> 
</string-array> 

array.xml

に文字列の配列を作成し、私のxmlレイアウト、ここのように私MainActivity見ている

<ListView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/listView" 
    android:entries="@array/numbers" 
    android:layout_alignParentTop="true" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentStart="true" /> 

にlisViewを入れています。

public class MainActivity extends AppCompatActivity implements AdapterView.OnItemClickListener { 

ListView listView; 
String[] number; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
    setSupportActionBar(toolbar); 

    number = getResources().getStringArray(R.array.numbers); 

    listView = (ListView) findViewById(R.id.listView); 
    ArrayAdapter<String> adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, number); 
    listView.setAdapter(adapter); 
    listView.setOnItemClickListener(this); 
} 

@Override 
public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
    TextView textView = (TextView) view; 
    Toast.makeText(this, textView.getText() , Toast.LENGTH_SHORT).show(); 
} 

}

1

String[] number = getResources().getStringArray(R.id.numbers); 
ArrayAdapter<String> adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, number); 
関連する問題