2016-04-28 14 views
0

私は最初に<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> 
+0

ようonBackPressedメソッドをオーバーライドすることができますonBackPressedあなたが欲しいものを何でもしてください。別の可能性は、フラグメントを使用することです。 –

+0

他の人たちがあなたが探しているものを達成するためにあなたのonBackPressedを上書きすることを提案しているので。ただし、内容を変更するたびに新しいアダプタを作成せず、インスタンス変数として単一のアダプタを作成し、アダプタ内の項目のみを変更してadapter.notifyDatasetChanged()メソッドを呼び出します。 –

+0

ありがとう@GabeSechan – Doglas

答えて

0

あなたは現在の状態を知るために、変数を宣言すると、あなたがオーバーライドすることができます。この

private boolean inSub = false; 

    @Override 
    public void onItemClick(AdapterView<?> parent, View view, int position, 
      long id) { 
     inSub = true; 
     switch(lv.getItemAtPosition(position).toString()){ 

[.....] 

    @Override 
    public void onBackPressed() { 
     if (inSub){ 
      list=getResources().getStringArray(R.array.main); 
      lv.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,list)); 
      inSub = false; 
     }else{ 
      super.onBackPressed(); 
     } 
    } 
関連する問題