まず、答えてくれてありがとう! Androidが初めてで、これが私の問題です。
リストビューに文字列配列の値を取得したい。
プログラムは次のコードで正常に機能します。
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*/
}
});
}
}
への変更
_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
_
_strings.xml
_に文字列配列fiがあると仮定します。
おそらくNullPointerException
を得たでしょう。 getResources()
のアクティビティコンテキストが必要です。 onCreate
の中に移動します。
これが私がしたことです。 array.xmlにstring-arrayを作成しました
<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>
そして、私のXMLレイアウトにlisViewを入れます
<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" />
mainActivityは次のようになります。
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();
}
}
削除する Android:entries
.xmlファイルから&文字列配列を定義します
String[] number = getResources().getStringArray(R.id.numbers);
ArrayAdapter<String> adapter = new ArrayAdapter<>(this, Android.R.layout.simple_list_item_1, number);
あなたの問題は、コードが作成または他の機能に置かれるべきであるということです。静的変数としてではない