我有一个包含10个标签的滑动标签活动。在每个标签中,我显示了那十天的电影列表。从第1天开始到第10天。这就是我所做的,
公共类TabImageActivity扩展了AppCompatActivity {
private Toolbar toolbar;
private TabLayout tabLayout;
private ViewPager viewPager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.tab_activity2);
toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
//getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setTitle("Screening");
viewPager = (ViewPager) findViewById(R.id.viewpager);
setupViewPager(viewPager);
tabLayout = (TabLayout) findViewById(R.id.tabs);
tabLayout.setupWithViewPager(viewPager);
viewPager.setCurrentItem(0, false);
}
private void setupViewPager(ViewPager viewPager) {
ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager());
adapter.addFragment(new ImageFragment1(), "20th Nov.");
adapter.addFragment(new ImageFragment2(), "21st Nov.");
adapter.addFragment(new Day3Fragment(), "22nd Nov.");
adapter.addFragment(new Day4Fragment(), "23rd Nov.");
adapter.addFragment(new Day5Fragment(), "24th Nov.");
adapter.addFragment(new Day6Fragment(), "25th Nov.");
adapter.addFragment(new Day7Fragment(), "26th Nov.");
adapter.addFragment(new Day8Fragment(), "27th Nov.");
adapter.addFragment(new Day9Fragment(), "28th Nov.");
adapter.addFragment(new Day10Fragment(), "29th Nov.");
viewPager.setAdapter(adapter);
}
class ViewPagerAdapter extends FragmentPagerAdapter {
private final List<Fragment> mFragmentList = new ArrayList<>();
private final List<String> mFragmentTitleList = new ArrayList<>();
public ViewPagerAdapter(FragmentManager manager) {
super(manager);
}
@Override
public Fragment getItem(int position) {
return mFragmentList.get(position);
}
@Override
public int getCount() {
return mFragmentList.size();
}
public void addFragment(Fragment fragment, String title) {
mFragmentList.add(fragment);
mFragmentTitleList.add(title);
}
@Override
public CharSequence getPageTitle(int position) {
return mFragmentTitleList.get(position);
}
}
}
我的第一个标签片段
public class ImageFragment1 extends Fragment {
private static final String TAG = ImageFragment1.class.getSimpleName();
private static String bitmap="thumbnailUrl";
// Movies json url
private static final String url = "My URL";
private ProgressDialog pDialog;
private List<Movie> movieList = new ArrayList<Movie>();
private CustomListAdapter adapter;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
final View rootView = inflater.inflate(R.layout.image_fragment1, container, false);
GridView gridView = (GridView) rootView.findViewById(R.id.gridview);
adapter = new CustomListAdapter(getActivity(), movieList);
gridView.setAdapter(adapter);
pDialog = new ProgressDialog(getContext());
// Showing progress dialog before making http request
pDialog.setMessage("Loading...");
pDialog.show();
if(movieList!=null){
movieList.clear();
}
// Creating volley request obj
JsonArrayRequest movieReq = new JsonArrayRequest(url,
new Response.Listener<JSONArray>() {
@Override
public void onResponse(JSONArray response) {
Log.d(TAG, response.toString());
hidePDialog();
// Parsing json
for (int i = 0; i < response.length(); i++) {
try {
JSONObject obj = response.getJSONObject(i);
Movie movie = new Movie();
movie.setTitle(obj.getString("title"));
movie.setThumbnailUrl(obj.getString("image"));
// movie.setRating(((Number) obj.get("rating"))
// .doubleValue());
// movie.setYear(obj.getInt("releaseYear"));
// adding movie to movies array
movieList.add(0, movie);
} catch (JSONException e) {
e.printStackTrace();
}
}
// notifying list adapter about data changes
// so that it renders the list view with updated data
adapter.notifyDataSetChanged();
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
VolleyLog.d(TAG, "Error: " + error.getMessage());
hidePDialog();
}
});
// Adding request to request queue
AppController.getInstance().addToRequestQueue(movieReq);
gridView.setOnItemClickListener(new AdapterView.OnItemClickListener()
{
public void onItemClick(AdapterView<?> parent, View v, int position, long id)
{
// this 'mActivity' parameter is Activity object, you can send the current activity.
// Intent i = new Intent(getContext(), ImageViewActivity.class);
// startActivity(i);
//Get item at position
// Movie item = (Movie) parent.getItemAtPosition(position);
bitmap = ((Movie) movieList.get(position)).getThumbnailUrl();
String title = ((TextView) rootView.findViewById(R.id.text)).getText().toString();
Intent intent = new Intent(getContext(), ImageViewActivity.class);
// Interesting data to pass across are the thumbnail size/location, the
// resourceId of the source bitmap, the picture description, and the
// orientation (to avoid returning back to an obsolete configuration if
// the device rotates again in the meantime)
bitmap = ((Movie) movieList.get(position)).getThumbnailUrl();
// Starting single contact activity
// in.putExtra("THUMB", thumbNail.toString());
// in.putExtra("image2", imgByte);
intent.putExtra("images", bitmap);
intent.putExtra("TITLE", title);
// in.putExtra("LIKES", likes);
//in.putExtra("DATE", date);
// in.putExtra("VIDEO", video);
// in.putExtra("IDD", idd);
// in.putExtra("UNIQUEID", deviceId);
//Start details activity
startActivity(intent);
}
});
return rootView;
}
@Override
public void onDestroy() {
super.onDestroy();
hidePDialog();
}
private void hidePDialog() {
if (pDialog != null) {
pDialog.dismiss();
pDialog = null;
}
}
public class CustomListAdapter extends BaseAdapter {
private Activity activity;
private LayoutInflater inflater;
private List<Movie> movieItems;
ImageLoader imageLoader = AppController.getInstance().getImageLoader();
public CustomListAdapter(Activity activity, List<Movie> movieItems) {
this.activity = activity;
this.movieItems = movieItems;
}
@Override
public int getCount() {
return movieItems.size();
}
@Override
public Object getItem(int location) {
return movieItems.get(location);
}
@Override
public long getItemId(int position) {
return position;
}
private int lastPosition = -1;
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (inflater == null)
inflater = (LayoutInflater) activity
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
if (convertView == null)
convertView = inflater.inflate(R.layout.image_gridview_item, null);
if (imageLoader == null)
imageLoader = AppController.getInstance().getImageLoader();
NetworkImageView thumbNail = (NetworkImageView) convertView.findViewById(R.id.picture);
TextView title = (TextView) convertView.findViewById(R.id.text);
// TextView rating = (TextView) convertView.findViewById(R.id.rating);
// TextView genre = (TextView) convertView.findViewById(R.id.genre);
// TextView year = (TextView) convertView.findViewById(R.id.releaseYear);
// getting movie data for the row
Movie m = movieItems.get(position);
// thumbnail image
thumbNail.setImageUrl(m.getThumbnailUrl(), imageLoader);
// title
title.setText(m.getTitle());
//animation
Animation animation = AnimationUtils.loadAnimation(getContext(), (position > lastPosition) ? R.anim.up_from_bottom : R.anim.down_from_top);
convertView.startAnimation(animation);
lastPosition = position;
// rating
// rating.setText("Rating: " + String.valueOf(m.getRating()));
return convertView;
}
}
}
答案 0 :(得分:3)
对于其中一个项目,我有相同的布局,大约10个选项卡使用相同的片段。例如,我有一个名为Movie Fragment的片段,然后我有一个看起来像这样的新实例方法。
public static MovieFragment newInstance(String movieUrl) {
FeedFragment fragment = new FeedFragment();
Bundle args = new Bundle();
args.putString("url", movieUrl);
fragment.setArguments(args);
return fragment;
}
然后你需要做的就是有一个方法可以像这样从
中获取数据 public void getBundleInformation() {
if (getArguments().containsKey("url") {
movieUrl = getArguments().getString("url");
}
}
然后你的适配器看起来像这样
private void setupViewPager(ViewPager viewPager) {
ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager());
adapter.addFragment(MovieFragment.NewInstance(url), "20th Nov.");
adapter.addFragment(MovieFragment.NewInstance(url), "21st Nov.");
adapter.addFragment(MovieFragment.NewInstance(url), "22nd Nov.");
adapter.addFragment(MovieFragment.NewInstance(url), "23rd Nov.");
adapter.addFragment(MovieFragment.NewInstance(url), "24th Nov.");
adapter.addFragment(MovieFragment.NewInstance(url), "25th Nov.");
adapter.addFragment(MovieFragment.NewInstance(url), "26th Nov.");
adapter.addFragment(MovieFragment.NewInstance(url), "27th Nov.");
adapter.addFragment(MovieFragment.NewInstance(url), "28th Nov.");
adapter.addFragment(MovieFragment.NewInstance(url), "29th Nov.");
viewPager.setAdapter(adapter);
}