3

我已经实现了使用viewpager通过在Eclipse中使用该模板swipey标签应用 enter image description here的Android如何把鉴于寻呼机片段列表视图

现在我得到延伸FragmentActivity这样

 package com.example.abcd2; 

    import java.util.Locale; 

    import android.os.Bundle; 
    import android.support.v4.app.Fragment; 
    import android.support.v4.app.FragmentActivity; 
    import android.support.v4.app.FragmentManager; 
    import android.support.v4.app.FragmentPagerAdapter; 
    import android.support.v4.app.NavUtils; 
    import android.support.v4.view.ViewPager; 
    import android.view.Gravity; 
    import android.view.LayoutInflater; 
    import android.view.Menu; 
    import android.view.MenuItem; 
    import android.view.View; 
    import android.view.ViewGroup; 
    import android.widget.TextView; 

    public class MainActivity extends FragmentActivity { 

     /** 
     * The {@link android.support.v4.view.PagerAdapter} that will provide 
     * fragments for each of the sections. We use a 
     * {@link android.support.v4.app.FragmentPagerAdapter} derivative, which 
     * will keep every loaded fragment in memory. If this becomes too memory 
     * intensive, it may be best to switch to a 
     * {@link android.support.v4.app.FragmentStatePagerAdapter}. 
     */ 
     SectionsPagerAdapter mSectionsPagerAdapter; 

     /** 
     * The {@link ViewPager} that will host the section contents. 
     */ 
     ViewPager mViewPager; 

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

      // Create the adapter that will return a fragment for each of the three 
      // primary sections of the app. 
      mSectionsPagerAdapter = new SectionsPagerAdapter(
        getSupportFragmentManager()); 

      // Set up the ViewPager with the sections adapter. 
      mViewPager = (ViewPager) findViewById(R.id.pager); 
      mViewPager.setAdapter(mSectionsPagerAdapter); 

     } 

     @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; 
     } 

     /** 
     * A {@link FragmentPagerAdapter} that returns a fragment corresponding to 
     * one of the sections/tabs/pages. 
     */ 
     public class SectionsPagerAdapter extends FragmentPagerAdapter { 

      public SectionsPagerAdapter(FragmentManager fm) { 
       super(fm); 
      } 

      @Override 
      public Fragment getItem(int position) { 
       // getItem is called to instantiate the fragment for the given page. 
       // Return a DummySectionFragment (defined as a static inner class 
       // below) with the page number as its lone argument. 
       if(position==0) 
{ 
Fragment frag2=new ShowFrag2(); 
       return frag2;} 
else 
{ 
Fragment fragment = new DummySectionFragment(); 
       Bundle args = new Bundle(); 
       args.putInt(DummySectionFragment.ARG_SECTION_NUMBER, position + 1); 
       fragment.setArguments(args); 
       return fragment;} 
      } 

      @Override 
      public int getCount() { 
       // Show 3 total pages. 
       return 3; 
      } 

      @Override 
      public CharSequence getPageTitle(int position) { 
       Locale l = Locale.getDefault(); 
       switch (position) { 
       case 0: 
        return getString(R.string.title_section1).toUpperCase(l); 
       case 1: 
        return getString(R.string.title_section2).toUpperCase(l); 
       case 2: 
        return getString(R.string.title_section3).toUpperCase(l); 
       } 
       return null; 
      } 
     } 

     /** 
     * A dummy fragment representing a section of the app, but that simply 
     * displays dummy text. 
     */ 
     public static class DummySectionFragment extends Fragment { 
      /** 
      * The fragment argument representing the section number for this 
      * fragment. 
      */ 
      public static final String ARG_SECTION_NUMBER = "section_number"; 

      public DummySectionFragment() { 
      } 

      @Override 
      public View onCreateView(LayoutInflater inflater, ViewGroup container, 
        Bundle savedInstanceState) { 
       View rootView = inflater.inflate(R.layout.fragment_main_dummy, 
         container, false); 
       TextView dummyTextView = (TextView) rootView 
         .findViewById(R.id.section_label); 
       dummyTextView.setText(Integer.toString(getArguments().getInt(
         ARG_SECTION_NUMBER))); 
       return rootView; 
      } 
     } 

    } 

活动在这里,为了在其中一个选项卡中创建一个新的片段,我使用if-else基于getItem()方法中的位置,如图所示。 片段showfrag2是这个

import android.os.Bundle; 
import android.support.v4.app.Fragment; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 

public class ShowFrag2 extends Fragment { 
    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
     Bundle savedInstanceState) { 
     // Inflate the layout for this fragment 
     return inflater.inflate(R.layout.frag2, container, false); 
    } 
} 

我的问题是,如何创建在这个片段中的一个列表视图。我只想以这种方式使用简单的列表视图

LevelAdapter adapter = new LevelAdapter(this, 
      R.layout.list_item, weather_data); 


    listView1 = (ListView)findViewById(R.id.listView1); 



    listView1.setAdapter(adapter); 

但是,这已经在一个活动中完成。我如何在上面的片段中使用这样的东西。此外,我不能使用ListFragment作为getView()方法返回一个片段。 如何实现这一点请帮助。 感谢 编辑: 这里是我的适配器代码:

package com.example.abcd3; 

import android.app.Activity; 
import android.content.Context; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.ArrayAdapter; 
import android.widget.ImageView; 
import android.widget.TextView; 

public class LevelAdapter extends ArrayAdapter<Level> { 

    static Context context; 
     static int layoutResourceId; 
     static Level data[] = null; 

    /* public LevelAdapter(Context context, int layoutResourceId, Level[] data) { 
      super(context, layoutResourceId, data); 
      this.layoutResourceId = layoutResourceId; 
      this.context = context; 
      this.data = data; 
     }*/ 

     public LevelAdapter(ShowFrag1 showFrag1, int listItem, 
       Level[] weather_data) { 
      super(context, layoutResourceId, data); 
      this.layoutResourceId = layoutResourceId; 
      this.context = context; 
      this.data = data; 

      // TODO Auto-generated constructor stub 
     } 

     public long getItemId(int position) { 
      return position; 
     } 

     @Override 
     public View getView(int position, View convertView, ViewGroup parent) { 
      View row = convertView; 
      WeatherHolder holder = null; 

      if(row == null) 
      { 
       LayoutInflater inflater = ((Activity)context).getLayoutInflater(); 
       row = inflater.inflate(layoutResourceId, parent, false); 

       holder = new WeatherHolder(); 
       holder.imgIcon = (ImageView)row.findViewById(R.id.imgIcon); 
       holder.txtTitle = (TextView)row.findViewById(R.id.txtTitle); 
       // holder.imgIcon2=(ImageView)row.findViewById(R.id.imgIcon2); 


       row.setTag(holder); 
      } 
      else 
      { 
       holder = (WeatherHolder)row.getTag(); 
      } 

      Level weather = data[position]; 
      holder.txtTitle.setText(weather.title); 
      holder.imgIcon.setImageResource(weather.icon); 

      return row; 
     } 

     static class WeatherHolder 
     { 
      ImageView imgIcon; 
      TextView txtTitle; 
     // ImageView imgIcon2; 
     } 

} 

回答

3

确保您已在R.layout.frag2定义ListView并设置适配器的ShowFrag2onCreateView到ListView控件。 (类似于其活动所做的那样)

public View onCreateView(LayoutInflater inflater, ViewGroup container, 
     Bundle savedInstanceState) { 

    View fragmentLayout = inflater.inflate(R.layout.frag2, container, false); 

    ListView listView1 = (ListView) fragmentLayout.findViewById(R.id.mylistview); 

    LevelAdapter adapter = new LevelAdapter(this, R.layout.list_item, weather_data); 
    listView1 = (ListView)findViewById(R.id.listView1); 
    listView1.setAdapter(adapter); 

    return fragmentLayout; 

} 
+0

谢谢,但findviewbyid()和getlistview()如果我尝试在片段中所说的话,函数不会出现在可用函数列表中。如果可能,你可以发布一些示例代码吗? –

+0

添加了一个示例,您可以按照它进行操作。我没有测试过,但你在这里得到的想法是 –

+0

,什么是v? –

0

我有一个列表视图特定listview.onclicking进入西港岛线直接到活动在那里我有特定条目的完整细节。我想在完整的细节活动中实施滑动动作,以便我不需要单击后退按钮以查看listview ..instaed我可以看到下一个条目的完整详细信息

+0

sry问的问题 – user4287432

+0

你可以选择删除这个答案,你可以要求它作为一个新的答案。 – Darpan

相关问题