Activity代码(建立了viewpager和pagerslidingtablestrip并关联)
package com.edu.jereh.jreduch08; import android.support.v4.app.Fragment; import android.support.v4.view.ViewPager; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import com.astuetz.PagerSlidingTabStrip; import com.edu.jereh.jreduch08.adapter.MyFragmentAdapter; import com.edu.jereh.jreduch08.fragment.PagerFragment; import java.util.ArrayList; import java.util.List; public class FragmentPagerActivity extends AppCompatActivity { private ViewPager vp; private PagerSlidingTabStrip pst; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_fragment_pager); vp = (ViewPager)findViewById(R.id.vp); pst = (PagerSlidingTabStrip) findViewById(R.id.pst); List<Fragment>list = new ArrayList<>(); List<String> titles = new ArrayList<>(); titles.add("体育"); titles.add("娱乐"); titles.add("奥运"); titles.add("财经"); titles.add("健康"); for(int i = 1;i<=5;i++){ Fragment fragment = new PagerFragment();//在循环里new pagerfragment Bundle bundle = new Bundle(); bundle.putInt("arg",i); fragment.setArguments(bundle); //传值,只能传bundle list.add(fragment); } MyFragmentAdapter ma = new MyFragmentAdapter(getSupportFragmentManager(),list,titles); vp.setAdapter(ma); pst.setIndicatorColor(getResources().getColor(R.color.colorPrimaryDark)); pst.setIndicatorHeight(2); pst.setTextColor(getResources().getColor(R.color.colorPrimary)); //pst.setShouldExpand(true);自动分配标题栏长度 pst.setViewPager(vp);//把他俩关联起来 } }
布局文件
ListView中的布局
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <ImageView android:layout_width="150dp" android:layout_height="70dp" android:id="@+id/img" android:src="@mipmap/ic_launcher" /> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/title" android:text="我是标题" android:layout_marginStart="32dp" android:layout_alignParentTop="true" android:layout_toEndOf="@+id/from" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/pubData" android:text="今天" android:layout_below="@+id/img" android:layout_alignParentEnd="true" android:layout_marginEnd="42dp" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/from" android:text="新浪网" android:layout_below="@+id/img" android:layout_toEndOf="@+id/img" /> </RelativeLayout>
建立一个News类,将ListView中布局中的组件建立进去(注意别忘记建立构造和Getter、Setter方法),
其中后面实现的Serializable是一个序列化接口,无构造(Parcelable是另一个序列化接口,这个有构造方法需要实现),用于点击ListView中一条item实现跳转Activity,代码如下
package com.edu.jereh.jreduch08.entity; import java.io.Serializable; /** * Created by sa on 2016/8/9. */ public class News implements Serializable{ //序列化接口serializable(Parcelable是另一个序列化接口,这个有构造方法需要实现) private String title; private String pubData; private String from; private int img ; public News(String title, String pubData, String from, int img) { this.title = title; this.pubData = pubData; this.from = from; this.img = img; } public int getImg() { return img; } public String getTitle() { return title; } public String getPubData() { return pubData; } public String getFrom() { return from; } }
ListView自定义适配器继承自BaseAdapter,代码如下:
package com.edu.jereh.jreduch08.adapter; import android.content.Context; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.ImageView; import android.widget.TextView; import com.edu.jereh.jreduch08.R; import com.edu.jereh.jreduch08.entity.News; import java.util.List; /** * Created by sa on 2016/8/9. */ public class MyListAdapter extends BaseAdapter { private List<News> list; private Context context; public MyListAdapter(List<News> list, Context context) { this.list = list; this.context = context; } @Override public int getCount() { return list.size(); } @Override public Object getItem(int position) { return list.get(position); } @Override public long getItemId(int position) { return 0; } @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder vh; if(convertView == null){ vh = new ViewHolder(); convertView= LayoutInflater.from(context).inflate(R.layout.list_layout,null); vh.img = (ImageView) convertView.findViewById(R.id.img); vh.title = (TextView) convertView.findViewById(R.id.title); vh.pubData = (TextView) convertView.findViewById(R.id.pubData); vh.from = (TextView) convertView.findViewById(R.id.from); convertView.setTag(vh); }else { vh = (ViewHolder) convertView.getTag(); } News news = list.get(position); vh.img.setImageResource(news.getImg()); vh.title.setText(news.getTitle()); vh.pubData.setText(news.getPubData()); vh.from.setText(news.getFrom()); return convertView; } private class ViewHolder{ ImageView img; TextView title; TextView pubData; TextView from; } }Fragment代码(其中设计了ListView中每一条item的监听,点击后跳转Activity)及布局文件(注意ListView应放在Fragment中)package com.edu.jereh.jreduch08.fragment; import android.content.Intent; import android.os.Bundle; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.ListView; import com.edu.jereh.jreduch08.R; import com.edu.jereh.jreduch08.adapter.MyListAdapter; import com.edu.jereh.jreduch08.entity.News; import com.edu.jereh.jreduch08.fragmentcallback.IntentActivity; import java.util.ArrayList; import java.util.List; /** * A simple {@link Fragment} subclass. */ public class PagerFragment extends Fragment { public PagerFragment() { // Required empty public constructor } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // Inflate the layout for this fragment return inflater.inflate(R.layout.fragment_pager, container, false); } @Override public void onActivityCreated(Bundle savedInstanceState) { //onA自动出来 super.onActivityCreated(savedInstanceState); ListView lv = (ListView) getView().findViewById(R.id.lv); final List<News> list = new ArrayList<>(); MyListAdapter ma = new MyListAdapter(list,getActivity()); lv.setAdapter(ma); final Bundle bundle = getArguments(); lv.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { News news =list.get(position); Intent intent = new Intent(getActivity(), IntentActivity.class); intent.putExtra("obj",news); Bundle b1 = new Bundle(); b1.putString("arg1","今天是七月七"); intent.putExtra("bundle",b1);//传值 startActivity(intent); // Toast.makeText(getActivity(),news.getTitle(),Toast.LENGTH_SHORT).show(); } }); if(bundle!=null){ int arg = bundle.getInt("arg"); switch (arg){ case 1: for(int i = 0;i<20; i++){ list.add(new News("体育新闻"+i,"今天","新浪网",R.mipmap.qhongfa)); } ma.notifyDataSetChanged();//通知适配器数据变更 break; case 2: for(int i = 0;i<20; i++){ list.add(new News("财经频道"+i,"今天","新浪网",R.mipmap.qingzhi2)); } ma.notifyDataSetChanged(); break; case 3: for(int i = 0;i<20; i++){ list.add(new News("国际新闻"+i,"今天","新浪网",R.mipmap.chiquan2)); } ma.notifyDataSetChanged(); break; case 4: for(int i = 0;i<20; i++){ list.add(new News("生活健康"+i,"今天","新浪网",R.mipmap.huangyuan2)); } ma.notifyDataSetChanged(); break; case 5: for(int i = 0;i<20; i++){ list.add(new News("女性生活"+i,"今天","新浪网",R.mipmap.qhongfa)); } ma.notifyDataSetChanged(); break; } } } }跳转后的Activity代码package com.edu.jereh.jreduch08.fragmentcallback; import android.content.Intent; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.widget.TextView; import com.edu.jereh.jreduch08.R; import com.edu.jereh.jreduch08.entity.News; public class IntentActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_intent); TextView tv = (TextView) findViewById(R.id.tv); Intent intent = getIntent(); News news = (News) intent.getSerializableExtra("obj"); //换成News news = intent.getParcelableExtra("obj"); Bundle bundle = intent.getBundleExtra("bundle"); String arg = bundle.getString("arg1"); // String str = news.getTitle(); StringBuilder sbid = new StringBuilder(); sbid.append(arg); sbid.append("\n"); sbid.append(news.getTitle()); sbid.append(news.getPubData()); sbid.append(news.getFrom()); tv.setText(sbid.toString()); } }效果展示点击一条item后