2013-10-15 2 views
1

Надеюсь, вы, ребята, помогите мне ..Открыть новый список из предыдущего списка

У меня есть список с 5 строками в нем. Когда я нажимаю на строку, он открывает другой класс активности. Теперь я хочу, чтобы я хотел открыть новый список, а не новую активность при нажатии. Всего у меня 6 списков просмотров. Я хотел бы открыть свой новый список в правой части предыдущего списка, чтобы оба списка были видны. мое кодирование для OnClick слушателя

listView.setOnItemClickListener(new OnItemClickListener() { 
    @Override 
    public void onItemClick(AdapterView<?> paramAdapterView, View paramView, int paramInt, 
      long paramLong) { 
     switch(position) 
{ 
    case 0: Intent newActivity0 = new Intent(YourActivity.this, second.class);  
      startActivity(newActivity0); 
      break; 
    case 1: Intent newActivity1 = new Intent(YourActivity.this, third.class);  
      startActivity(newActivity1); 
      break; 
    case 2: Intent newActivity2 = new Intent(YourActivity.this, fourth.class);  
      startActivity(newActivity2); 
      break; 
    case 3: Intent newActivity3 = new Intent(YourActivity.this, fifth.class);  
      startActivity(newActivity3); 
      break; 
    case 4: Intent newActivity4 = new Intent(YourActivity.this, sixth.class);  
      startActivity(newActivity4); 
      break; 
}    
    } 
}); 

Here мой ожидаемый результат, и когда я нажимаю вторую строку он должен открыть новый ListView на RightSide его. Пожалуйста, помогите мне в достижении этого. Заранее спасибо.

+0

Вы можете разместить скриншот о том, что вы пытаетесь сделать –

+0

@AT_AB - это мой макет, и теперь мой вопрос ясен? – AndroidOptimist

+0

(все хорошо из фильма 3 идиотов :)) Когда вы нажимаете на второй список, что вы ожидаете? - –

ответ

1

нормально, попробуйте этот

Во-первых, вы должны сделать некоторые изменения в файле XML макет

Планировка:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:baselineAligned="false" 
android:orientation="horizontal" 
android:paddingBottom="@dimen/activity_vertical_margin" 
android:paddingLeft="@dimen/activity_horizontal_margin" 
android:paddingRight="@dimen/activity_horizontal_margin" 
android:paddingTop="@dimen/activity_vertical_margin" 
tools:context=".MainActivity" > 

<ListView 
    android:id="@+id/listView1" 
    android:layout_width="0dp" 
    android:layout_height="wrap_content" 
    android:layout_weight="1" 
    android:background="#fff123" 
    /> 


<ListView 
    android:id="@+id/listView2" 
    android:layout_width="0dp" 
    android:layout_height="wrap_content" 
    android:layout_weight="1" 
    android:background="#ccc987" 
    android:visibility="gone" /> 

<!-- add other list as you like --> 

</LinearLayout> 

И другие изменения на Ваша деятельность вроде этого

активность

import android.app.Activity; 
import android.os.AsyncTask; 
import android.os.Bundle; 
import android.view.Menu; 
import android.view.View; 
import android.widget.AdapterView; 
import android.widget.AdapterView.OnItemClickListener; 
import android.widget.ArrayAdapter; 
import android.widget.ListView; 
import android.widget.Toast; 

public class MainActivity extends Activity { 

    ListView listView1; 
    ListView listView2; 
    String[] items = { "item 1", "item 2", "item 3", "item 4", "item 5" }; 
    String[] items_list_2 = { "items_list_2", "items_list_2", "items_list_2", 
      "items_list_2", "items_list_2", "items_list_2", "items_list_2", 
      "items_list_2", "items_list_2", "items_list_2", "items_list_2" }; 

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

     listView1 = (ListView) findViewById(R.id.listView1); 
     listView1.setAdapter(new ArrayAdapter<String>(MainActivity.this, 
       android.R.layout.simple_list_item_1, items)); 
     listView1.setOnItemClickListener(new OnItemClickListener() { 

      @Override 
      public void onItemClick(AdapterView<?> arg0, View arg1, 
        int position, long arg3) { 
       // TODO Auto-generated method stub 
       switch (position) { 
       case 0: 
        new loadData().execute(); 
        break; 

       default: 
        break; 
       } 
      } 
     }); 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.main, menu); 
     return true; 
    } 

    private class loadData extends AsyncTask<Void, Void, Void> { 

     @Override 
     protected Void doInBackground(Void... params) { 
      // TODO Auto-generated method stub 

      return null; 
     } 

     @Override 
     protected void onPostExecute(Void result) { 
      // TODO Auto-generated method stub 
      super.onPostExecute(result); 

      listView2 = (ListView) findViewById(R.id.listView2); 
      listView2.setAdapter(new ArrayAdapter<String>(MainActivity.this, 
        android.R.layout.simple_list_item_1, items_list_2)); 
      listView2.setOnItemClickListener(new OnItemClickListener() { 

       @Override 
       public void onItemClick(AdapterView<?> arg0, View arg1, 
         int arg2, long arg3) { 
        // TODO Auto-generated method stub 
        Toast.makeText(MainActivity.this, "item_list_2 : " + arg2, 
          Toast.LENGTH_SHORT).show(); 
       } 
      }); 

      listView2.setVisibility(View.VISIBLE); 
     } 
    } 
} 

это, я надеюсь, что это поможет вам

Для задней кнопки нажимается вы должны переопределить onbackPressed метод как

@Override 
public void onBackPressed() { 
//hide the second list here 
    listView2.setVisibility(View.GONE); 
} 
+0

эта работа. может у, пожалуйста, скажите мне, как скрыть второй список при нажатии кнопки «Назад»? пожалуйста, – AndroidOptimist

+0

ОК, я отредактирую ответ, если это поможет вам, сделайте это как ответ (разрешен) для других людей –

+0

Мне бы хотелось достичь 2 простых вещей: 1) нажатие на откидную головку должно скрывать новый список 2) новый список должен открываться рядом строка, которую я нажимаю, например: если я нажму 3-й ряд оттуда, открою новый список (например, на рис.), пожалуйста, назовите меня для этого – AndroidOptimist

0

Вы должны использовать фрагмент, чтобы сделать это. В вашем FragmentActivity будет два фрагмента. Один фрагмент будет содержать список из 5 элементов, как вы. А другой фрагмент будет содержать listView. Когда вы нажимаете на один из 5 элементов, вам нужно обновить другой фрагмент, который содержит соответствующий список для этого элемента. Возможно, приложение настроек Android Tablets является хорошим примером того, что вы пытаетесь сделать.

Посмотрите эту ссылку, возможно, будет полезно для вас. Вы получите то, что вам нужно здесь.

http://www.vogella.com/articles/AndroidFragments/article.html

Смежные вопросы