私は最初に<string-array name="main">
を示す1つのアクティビティを持っています。この「メイン」配列には、2つの項目 - >(カテゴリーとメーカー)が含まれます。私はまた、それらのそれぞれは、5つの項目が含まれている、String.xml
に<string-array name="Category">
と<string-array name="Manufacturer">
を定義しました。同じアクティビティに戻るには?
、およびメーカーについても同じこと。しかし、ここで私は問題があります。たとえば、最初に「カテゴリ」アイテムをクリックするとそのアイテムが表示されますが、(カテゴリとメーカー)アイテムを含む「メイン」アレイには戻れません。
私はデバイス上で「戻る」をクリックすると、別のリストを表示するために同じアクティビティで作業しているため、アプリケーションが閉じられます。
新しいオプションを作成せずに、私が戻って「メイン」リストをバックオプションで表示できる方法はありますか?
main.java
public class MainActivity extends Activity implements OnItemClickListener{
ListView lv;
String [] list;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
lv=(ListView)findViewById(R.id.listView);
list=getResources().getStringArray(R.array.main);
lv.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,list));
lv.setOnItemClickListener(this);
}
@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
switch(lv.getItemAtPosition(position).toString()){
case "Category":
list=getResources().getStringArray(R.array.Category);
lv.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,list));
break;
case "Manufacturer":
list=getResources().getStringArray(R.array.Manufacturer);
lv.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,list));
break;
}
}
}
string.xmlを
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">ShaymaTest</string>
<string name="hello_world">Hello world!</string>
<string name="action_settings">Settings</string>
<string-array name="main">
<item >Category</item>
<item >Manufacturer</item>
</string-array><string-array name="Category">
<item >Category</item>
<item >Category</item>
<item >Category</item>
<item >Category</item>
<item >Category</item>
</string-array><string-array name="Manufacturer">
<item >Manufacturer</item>
<item >Manufacturer</item>
<item >Manufacturer</item>
<item >Manufacturer</item>
<item >Manufacturer</item>
</string-array>
</resources>
よう
onBackPressed
メソッドをオーバーライドすることができますonBackPressedあなたが欲しいものを何でもしてください。別の可能性は、フラグメントを使用することです。 –他の人たちがあなたが探しているものを達成するためにあなたのonBackPressedを上書きすることを提案しているので。ただし、内容を変更するたびに新しいアダプタを作成せず、インスタンス変数として単一のアダプタを作成し、アダプタ内の項目のみを変更してadapter.notifyDatasetChanged()メソッドを呼び出します。 –
ありがとう@GabeSechan – Doglas