2013-10-24 4 views
0

Создаем фрагмент мастера/детали из this. Это работает отлично, теперь здесь вместо textview подробно фрагмент класса я хотел бы реализовать listviews (т.е.), я хотел бы отображать детали masterview в виде дочернего списка, поэтому я попытался detail.xml:Список в виде фрагмента детали в главном/подробном виде

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:orientation="vertical" > 

     <ListView 
      android:layout_width="120dp" 
      android:layout_height="wrap_content" 
      android:id="@+id/listview1" 
      />" 
<ListView 
      android:layout_width="120dp" 
      android:layout_height="wrap_content" 
      android:id="@+id/listview2" 
      />" 

    </LinearLayout> 

и в моем классе detailFragment

public class DetailFragment1 extends ListFragment { 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     String[] values = new String[] { "1", "2", "3", 
       "4" }; 
     ArrayAdapter<String> adapter = new ArrayAdapter<String>(getActivity(), 
       android.R.layout.simple_list_item_1, values); 
       setListAdapter(adapter); 

    } 

Моя проблема ребенка ListView отображает на начальном этапе, но я хочу, чтобы отобразить эту ListView, когда я нажимаю на первую строку мастер page.Am нового фрагментам, поэтому мне помочь в достижении этого. Спасибо заранее.

ответ

0

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

<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:orientation="horizontal" 
    tools:context=".NavigationActivity" > 

    <LinearLayout 
     android:layout_width="0dp" 
     android:layout_height="match_parent" 
     android:background="@color/strip_background" 
     android:layout_weight="1" 
     android:orientation="vertical" > 

     <ListView 
      android:id="@+id/nav_lv_transactions" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:scrollbars="none" > 

     </ListView> 

    </LinearLayout> 

    <FrameLayout 
     android:id="@+id/nav_fl_frag_container" 
     android:layout_width="0dp" 
     android:layout_height="match_parent" 
     android:layout_weight="14" 
     android:background="@android:color/darker_gray" > 

    </FrameLayout> 

</LinearLayout> 

В OnClick listerner поставить этот код,

Bundle arguments = new Bundle(); 
arguments.putString(ARG_ITEM_ID, 
"Some Name"); 
MyClassFragment newFragment = new MyClassFragment(); 
newFragment.setArguments(arguments); 
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction(); 
transaction.replace(R.id.nav_fl_frag_container, newFragment); 
transaction.commit(); 

Попробуйте это. Она будет работать

+0

Спасибо за ур ответ .. Как я могу реализовать макет в моем классе onclick listener – AndroidOptimist

+0

Создайте фрагмент для макета, который вы хотите раздуть (с дочерним), а затем в клик-прослушиватель введите код, который я редактировал. –

1

Создание интерфейса CallBack:

public interface Callbacks { 

     public void onItemSelected(long id); 
} 

Пусть фрагмент inplement него:

public class DetailFragment1 extends ListFragment implements CallBacks { 

В ListFragment OnListitemClick:

@Override 
public void onListItemClick(ListView listView, View view, int position, long id) {  
    mCallbacks.onItemSelected(id); 
} 

В деятельности:

Public class MyActivity extends FragmentActivity implements Callbacks { 

@Override 
public void onItemSelected(long id) { 
    // Replace the detail fragment with the corresponding item selected in the list 
} 
Смежные вопросы