我有ListView
使用AsyncTask
从服务器获取数据。之后onItemClick
开始新Activity
,该ListView
应显示ViewPager
中所点击项目的更详细信息。很简单。但问题是单个页面应该像9GAG android app一样工作(即带有ViewPager
的可滑动片段)。详细信息更多。您对该页面的设计布局有何建议?目前我在该单页上使用public class IndividualPage extends ActionBarActivity{
ArrayList<Item> arrayOfList;
ViewPager pager;
CountryPageAdapter pageAdapter;
private ProgressBar mProgress;
@Override
public void onCreate (Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.secondpage);
mProgress = (ProgressBar) findViewById(R.id.linear_progress_bar);
new FilteredResult().execute();
pager = (ViewPager)findViewById(R.id.viewpager);
}
private List<Fragment> getFragments() {
List<Fragment> frags = new ArrayList<Fragment>();
System.out.println("fragments main ayya hai");
cats=arrayOfList;
for(int i = 0;i<cats.size();i++ ) {
System.out.println("number : "+i+"::"+cats.get(i).getSector());
frags.add(prepareFragment(cats.get(i).getImage(),cats.get(i).getName(),cats.get(i).getLocation(),cats.get(i).getSector(),cats.get(i).getStatus(),cats.get(i).getFounded(),cats.get(i).getFundRaising()));
}
return frags;
}
Fragment prepareFragment(String image,String name,String location,String Expertise,String sector,int founded,String fund) {
CountryFragment cf = new CountryFragment();
Bundle args = new Bundle();
args.putString(CountryFragment.STARTUP_IMAGE, image);
args.putString(CountryFragment.STARTUP_NAME, name);
args.putString(CountryFragment.STARTUP_LOCATION, location);
args.putString(CountryFragment.STARTUP_EXP, Expertise);
args.putString(CountryFragment.STARTUP_SEC, sector);
args.putInt(CountryFragment.STARTUP_FOUNDED, founded);
args.putString(CountryFragment.STARTUP_FUND, fund);
cf.setArguments(args);
return cf;
}
[![public class FilteredResult extends AsyncTask<String, Void, String> {
//onpreexcute nothing doing great in this
//onbackground
@Override
protected void onPostExecute(String result) {
List<Fragment> fragments = getFragments();
pageAdapter = new CountryPageAdapter(getSupportFragmentManager(), fragments);
pager.setAdapter(pageAdapter);
}
}]
并设计片段以获得所需的内容。
代码
<item name="android:listSelector">?attr/listChoiceBackgroundIndicator</item>
答案 0 :(得分:1)
我个人更喜欢ViewPagers
到ScrollViews
,因为他们没有将所有片段/视图保留在内存中。
此外,每个单独的项目都独立于其他项目。例如,如果您希望能够为每个项目实现垂直滚动,则无法使用HorizontalScrollView
执行此操作,因为所有视图都将一起滚动。
答案 1 :(得分:1)
即使我拥有与此类似的设计
班级档案
import java.util.ArrayList;
import org.json.JSONArray;
import org.json.JSONObject;
import android.graphics.Color;
import android.os.Bundle;
import android.support.v4.view.ViewPager;
import android.support.v7.app.ActionBar;
import android.util.Log;
import android.widget.LinearLayout;
import com.daimajia.slider.library.SliderLayout;
import com.daimajia.slider.library.Animations.DescriptionAnimation;
import com.daimajia.slider.library.SliderTypes.BaseSliderView;
import com.daimajia.slider.library.SliderTypes.TextSliderView;
public class TurfDetailsActivity extends BaseActivity{
private SliderLayout mDemoSlider;
ViewPager pager;
private ViewPager viewPager;
private TurfDetailsViewPagerAdapter mAdapter;
private ActionBar mActionBar;
LinearLayout SliderImg;
private PagerSlidingTabStrip tabs;
String Venue;
public static Bundle b;
public static ArrayList<ReviewModel> reviewList;
public static ArrayList<TimingModel> timigList;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_turf_details_1);
mDemoSlider = (SliderLayout)findViewById(R.id.turf_details_slider);
reviewList = new ArrayList<ReviewModel>();
timigList = new ArrayList<TimingModel>();
actionBarIdForAll("Turf Details");
String data = getIntent().getStringExtra("data");
Bundle object = getDataObject(data);
imageSlider(data);
tabs = (PagerSlidingTabStrip)findViewById(R.id.tabs);
viewPager = (ViewPager) findViewById(R.id.pager);
mActionBar = getSupportActionBar();
mAdapter = new TurfDetailsViewPagerAdapter(getSupportFragmentManager(), object);
viewPager.setAdapter(mAdapter);
mActionBar.setDisplayHomeAsUpEnabled(true);
viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageSelected(int position) {
mActionBar.setSelectedNavigationItem(position);
}
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
}
@Override
public void onPageScrollStateChanged(int arg0) {
}
});
tabs.setViewPager(viewPager);
tabs.setIndicatorColor(Color.parseColor("#ffffff"));
tabs.setTextColor(Color.parseColor("#ffffff"));
}
@Override
protected void onSaveInstanceState(Bundle outState) {
// TODO Auto-generated method stub
outState = b;
}
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
// TODO Auto-generated method stub
b = savedInstanceState;
}
private Bundle getDataObject(String data) {
// TODO Auto-generated method stub
ReviewModel mReviewModel;
TimingModel mTimingModel;
b = new Bundle();
try {
JSONObject obj = new JSONObject(data).getJSONArray("venue").getJSONObject(0);
b.putString("vid", obj.getString("vid"));
b.putString("venueName", obj.getString("venue_name"));
Venue = obj.getString("venue_name");
b.putString("location", obj.getString("location"));
b.putString("address", obj.getString("address"));
b.putString("contact", obj.getString("booking_contact"));
b.putString("turfSize", obj.getString("turf_size"));
b.putString("formats", obj.getString("preferred_format"));
b.putString("floodlights", obj.getString("floodlights"));
b.putString("ball", obj.getString("ball"));
b.putString("shoeType", obj.getString("shoe_type"));
b.putString("parking", obj.getString("parking"));
b.putString("refreshments", obj.getString("refreshments"));
b.putString("washrooms", obj.getString("washrooms"));
b.putString("bibs", obj.getString("bibs"));
b.putString("otherGames", obj.getString("other_games_played"));
b.putString("coaching", obj.getString("coaching"));
b.putString("stands", obj.getString("stands"));
b.putString("website", obj.getString("website"));
b.putString("latitude", obj.getString("latitude"));
b.putString("longitude", obj.getString("longitude"));
b.putString("cost", obj.getString("cost"));
b.putString("rating", obj.getString("rating"));
b.putString("createdDate", obj.getString("created_date"));
b.putString("updatedDate", obj.getString("updated_date"));
JSONArray array = new JSONObject(data).getJSONArray("reviews");
if(array.length()!=0){
for(int i=0;i<array.length();i++){
JSONObject obj11 = array.getJSONObject(i);
String vid = obj11.getString("vid");
String uid = obj11.getString("uid");
String email = obj11.getString("email");
String created_date = obj11.getString("created_date");
String review = obj11.getString("review");
String review_user_image = obj11.getString("image");
String review_user_name = obj11.getString("name");
b.putString("review", review);
b.putString("review_user_image", review_user_image);
b.putString("review_user_name", review_user_name);
mReviewModel = new ReviewModel(vid, uid, review, review_user_image, review_user_name, email, created_date);
reviewList.add(mReviewModel);
}
}else {
b.putString("Review_count", "0");
}
JSONArray arrayCost = new JSONObject(data).getJSONArray("cost");
for(int i=0;i<arrayCost.length();i++){
JSONObject obj12 = arrayCost.getJSONObject(i);
String vid = obj12.getString("vid");
String tid = obj12.getString("tid");
String timing = obj12.getString("timing");
String created_date = obj12.getString("created_date");
String weekdays = obj12.getString("weekdays");
String weekends = obj12.getString("weekends");
b.putString("timing", timing);
b.putString("weekdays", weekdays);
b.putString("weekends", weekends);
Log.e("timing", timing);
Log.e("weekdays", weekdays);
Log.e("weekends", weekends);
mTimingModel = new TimingModel(vid, tid, timing, weekdays, weekends);
timigList.add(mTimingModel);
}
} catch (Exception e) {
// TODO: handle exception
}
return b;
}
public void imageSlider(String data){
try {
JSONArray array = new JSONObject(data).getJSONArray("media");
if(array.length()!=0){
for(int i=0;i<array.length();i++){
JSONObject obj = array.getJSONObject(i);
String url = obj.getString("path");
TextSliderView textSliderView = new TextSliderView(this);
// initialize a SliderLayout
textSliderView.description(Venue).image(url).setScaleType(BaseSliderView.ScaleType.Fit);
//add your extra information
textSliderView.getBundle().putString("extra","Where is my turf");
mDemoSlider.addSlider(textSliderView);
}
}else{
TextSliderView textSliderView = new TextSliderView(this);
// initialize a SliderLayout
textSliderView .description("Where is my turf").image(R.drawable.ic_launcher).setScaleType(BaseSliderView.ScaleType.Fit);
//add your extra information
textSliderView.getBundle() .putString("extra","Where is my turf");
mDemoSlider.addSlider(textSliderView);
}
} catch (Exception e) {
e.printStackTrace();
}
mDemoSlider.setPresetTransformer(SliderLayout.Transformer.Accordion);
mDemoSlider.setPresetIndicator(SliderLayout.PresetIndicators.Right_Bottom);
mDemoSlider.setCustomAnimation(new DescriptionAnimation());
mDemoSlider.setDuration(3000);
}
}
ADAPTER
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
public class TurfDetailsViewPagerAdapter extends FragmentPagerAdapter {
private Bundle data;
public TurfDetailsViewPagerAdapter(FragmentManager fm, Bundle data) {
super(fm);
this.data = data;
}
@Override
public CharSequence getPageTitle(int position) {
// TODO Auto-generated method stub
if (position == 0)
{
return "ABOUT";
}
if (position == 1)
{
return "FEATURES";
}
if (position == 2)
{
return "COST";
}
if (position == 3)
{
return "REVIEWS";
}
return null;
}
@Override
public Fragment getItem(int index) {
switch (index) {
case 0:
return new AboutFragment(data);
case 1:
return new FeaturesFragment();
case 2:
return new CostFragment();
case 3:
return new ReviewsFragment();
}
return null;
}
@Override
public int getCount() {
// get item count - equal to number of tabs
return 4;
}
}
XML布局
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:custom="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:weightSum="1" >
<LinearLayout
android:id="@+id/image_forward"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_marginLeft="2dp"
android:layout_marginRight="2dp"
android:layout_weight=".35" >
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.daimajia.slider.demo.ImageSliderActivity" >
<com.daimajia.slider.library.SliderLayout
android:id="@+id/turf_details_slider"
android:layout_width="match_parent"
android:layout_height="match_parent"
custom:auto_cycle="true"
custom:indicator_visibility="visible"
custom:pager_animation="Accordion"
custom:pager_animation_span="1100" />
</RelativeLayout>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_marginLeft="2dp"
android:layout_marginRight="2dp"
android:layout_marginTop="2dp"
android:layout_weight=".65"
android:orientation="vertical" >
<com.PACKAGE.customviews.PagerSlidingTabStrip
android:id="@+id/tabs"
android:layout_width="match_parent"
android:layout_height="48dip"
android:background="#5e5b5b"
android:paddingLeft="3dp" />
<android.support.v4.view.ViewPager
android:id="@+id/pager"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
</android.support.v4.view.ViewPager>
</LinearLayout>
</LinearLayout>
结果图片
如果您需要任何形式的帮助,请免费询问..... Happeee ...编程......