Android string-array from xml file to ListView
Solution 1
Change to
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
I assume you have the string array fi in strings.xml
.
You probably got NullPointerException
. You require activity context for getResources()
. So move it inside onCreate
.
Solution 2
here is what I did. i have created a string-array in array.xml
<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>
and put a lisView in my xml layout
<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" />
here is my MainActivity look like.
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();
}
}
Solution 3
remove android:entries
from your .xml file & define the string array into
String[] number = getResources().getStringArray(R.id.numbers);
ArrayAdapter<String> adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, number);
Johnny
Updated on November 18, 2020Comments
-
Johnny over 3 years
First of all, thank you for your answers! I'm new for Android and this is my problem;
I want to take values of string array to listview.
Program works fine with these codes:
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);
But I wanna use xml file for string-array. This is my xml file:
<?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>
and I just changed the code with following code, and now program doesn't work.
String [] fiilliste= getResources().getStringArray(R.array.fi);
Can you help me to solve this problem? Thank you!
Activity codes:
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*/ } }); } }