position = getIntent().getIntExtra("position", 1);
initView(); addWebView(); }
public void addWebView() {
new Thread(new Runnable() {
@Override public void run() { // TODO Auto-generated method stub for (int i = 0; i < app.getNewsDatas().size(); i++) { WebView wView = new WebView(this);
public void initView() { contentView = (WebView) findViewById(R.id.content_webview); contentView.getSettings().setCacheMode( WebSettings.LOAD_CACHE_ELSE_NETWORK); contentView.getSettings().setJavaScriptEnabled(true); contentView.setWebViewClient(new WebViewClient() { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { // TODO Auto-generated method stub view.loadUrl(url); return true; } @Override public void onPageFinished(WebView view, String url) { // TODO Auto-generated method stub super.onPageFinished(view, url); } }); contentView.setHorizontalScrollBarEnabled(false); contentView.loadUrl(getIntent().getStringExtra("url")); } public void getContent(int parmPosition) { contentView.loadUrl(app.getNewsDatas().get(position).getNewsUrl()); }
@Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.content, menu); MenuItem menuItem = menu.findItem(R.id.news_fav); DBManager manager = new DBManager(this); if (manager.queryFav(getIntent().getIntExtra("id", 0))) { menuItem.setIcon(android.R.drawable.star_on); } return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. int id = item.getItemId(); if (id == R.id.news_fav) { DBManager manager = new DBManager(this); if (!manager.queryFav(getIntent().getIntExtra("id", 0))) { NewsData data = new NewsData(); data.setNewsId(getIntent().getIntExtra("id", 0)); data.setNewsTitle(getIntent().getStringExtra("title")); data.setNewsUrl(getIntent().getStringExtra("url")); data.setNewsImg(getIntent().getStringExtra("img")); data.setNewsTime(getIntent().getStringExtra("time")); manager.insertToFav(data); item.setIcon(android.R.drawable.star_on); } else { manager.deleteFromFav(getIntent().getIntExtra("id", 0)); item.setIcon(android.R.drawable.star_off); } } else if (id == R.id.news_share) { Intent shareIntent = new Intent(); shareIntent.setAction(Intent.ACTION_SEND); shareIntent.putExtra(Intent.EXTRA_TEXT, getString(R.string.share_app)); shareIntent.setType("text/plain"); startActivity(Intent.createChooser(shareIntent, getString(R.string.share_title))); } else if (id == android.R.id.home) { finish(); overridePendingTransition(R.anim.from_left_in, R.anim.from_right_out); } return super.onOptionsItemSelected(item); } @Override public void onBackPressed() { // TODO Auto-generated method stub // super.onBackPressed(); finish(); overridePendingTransition(R.anim.from_left_in, R.anim.from_right_out); } public void showPre() { position -= 1; // return app.getNewsDatas().get(position).getNewsUrl(); } public void showNext() { position += 1; // return app.getNewsDatas().get(position).getNewsUrl(); }
public class WebViewPagerAdapter extends PagerAdapter { public List<View> mListViews; public WebViewPagerAdapter(List<View> mListViews) { this.mListViews = mListViews; } @Override public void destroyItem(View arg0, int arg1, Object arg2) { ((ViewPager) arg0).removeView(mListViews.get(arg1)); } @Override public void finishUpdate(View arg0) { } @Override public int getCount() { return mListViews.size(); } @Override public Object instantiateItem(View arg0, int arg1) { ((ViewPager) arg0).addView(mListViews.get(arg1), position); return mListViews.get(arg1); } @Override public boolean isViewFromObject(View arg0, Object arg1) { return arg0 == (arg1); } @Override public void restoreState(Parcelable arg0, ClassLoader arg1) { } @Override public Parcelable saveState() { return null; } @Override public void startUpdate(View arg0) { } } @Override public void onPageScrollStateChanged(int arg0) { // TODO Auto-generated method stub
} @Override public void onPageScrolled(int arg0, float arg1, int arg2) { // TODO Auto-generated method stub
} @Override public void onPageSelected(int arg0) { // TODO Auto-generated method stub getContent(arg0); }}
碰到这么一个问题,我现在是一个listview中有10条新闻,我点击某一条进入webview那个界面,但是用了viewpager后每次都是加载第一条,而不是加载当前条,这怎么弄。代码如下。public class ContentActivity extends Activity implements OnPageChangeListener { private WebView contentView;
private ProgressBar progressBar;
private ViewPager mPager;
private List<View> listViews = new ArrayList<View>();
private MyApplication app; private int position;
@SuppressLint("SetJavaScriptEnabled")
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.content_activity); app = (MyApplication) getApplication();
getActionBar().setTitle("");
getActionBar().setDisplayHomeAsUpEnabled(true);
Drawable b = this.getResources().getDrawable(
R.drawable.abc_list_longpressed_holo);
getActionBar().setBackgroundDrawable(b);
mPager = (ViewPager) findViewById(R.id.vPager);
mPager.setAdapter(new WebViewPagerAdapter(listViews));
position = getIntent().getIntExtra("position", 1);
initView();
addWebView();
}
public void addWebView() {
new Thread(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
for (int i = 0; i < app.getNewsDatas().size(); i++) {
WebView wView = new WebView(this);
wView.getSettings().setCacheMode(
WebSettings.LOAD_CACHE_ELSE_NETWORK);
wView.getSettings().setJavaScriptEnabled(true);
wView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
// TODO Auto-generated method stub
view.loadUrl(url);
return true;
} @Override
public void onPageFinished(WebView view, String url) {
// TODO Auto-generated method stub
super.onPageFinished(view, url);
}
});
wView.setHorizontalScrollBarEnabled(false);
wView.loadUrl(app.getNewsDatas().get(i).getNewsUrl());
listViews.add(wView);
}
}
}).start();
}
public void initView() {
contentView = (WebView) findViewById(R.id.content_webview);
contentView.getSettings().setCacheMode(
WebSettings.LOAD_CACHE_ELSE_NETWORK);
contentView.getSettings().setJavaScriptEnabled(true);
contentView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
// TODO Auto-generated method stub
view.loadUrl(url);
return true;
} @Override
public void onPageFinished(WebView view, String url) {
// TODO Auto-generated method stub
super.onPageFinished(view, url);
}
});
contentView.setHorizontalScrollBarEnabled(false);
contentView.loadUrl(getIntent().getStringExtra("url"));
} public void getContent(int parmPosition) {
contentView.loadUrl(app.getNewsDatas().get(position).getNewsUrl());
}
@Override
public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.content, menu);
MenuItem menuItem = menu.findItem(R.id.news_fav);
DBManager manager = new DBManager(this);
if (manager.queryFav(getIntent().getIntExtra("id", 0))) {
menuItem.setIcon(android.R.drawable.star_on);
} return true;
} @Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
if (id == R.id.news_fav) {
DBManager manager = new DBManager(this);
if (!manager.queryFav(getIntent().getIntExtra("id", 0))) {
NewsData data = new NewsData();
data.setNewsId(getIntent().getIntExtra("id", 0));
data.setNewsTitle(getIntent().getStringExtra("title"));
data.setNewsUrl(getIntent().getStringExtra("url"));
data.setNewsImg(getIntent().getStringExtra("img"));
data.setNewsTime(getIntent().getStringExtra("time"));
manager.insertToFav(data);
item.setIcon(android.R.drawable.star_on);
} else {
manager.deleteFromFav(getIntent().getIntExtra("id", 0));
item.setIcon(android.R.drawable.star_off);
}
} else if (id == R.id.news_share) {
Intent shareIntent = new Intent();
shareIntent.setAction(Intent.ACTION_SEND);
shareIntent.putExtra(Intent.EXTRA_TEXT,
getString(R.string.share_app));
shareIntent.setType("text/plain");
startActivity(Intent.createChooser(shareIntent,
getString(R.string.share_title)));
} else if (id == android.R.id.home) {
finish();
overridePendingTransition(R.anim.from_left_in,
R.anim.from_right_out);
}
return super.onOptionsItemSelected(item);
} @Override
public void onBackPressed() {
// TODO Auto-generated method stub
// super.onBackPressed();
finish();
overridePendingTransition(R.anim.from_left_in, R.anim.from_right_out);
} public void showPre() {
position -= 1;
// return app.getNewsDatas().get(position).getNewsUrl();
} public void showNext() {
position += 1;
// return app.getNewsDatas().get(position).getNewsUrl();
}
public class WebViewPagerAdapter extends PagerAdapter {
public List<View> mListViews; public WebViewPagerAdapter(List<View> mListViews) {
this.mListViews = mListViews;
} @Override
public void destroyItem(View arg0, int arg1, Object arg2) {
((ViewPager) arg0).removeView(mListViews.get(arg1));
} @Override
public void finishUpdate(View arg0) {
} @Override
public int getCount() {
return mListViews.size();
} @Override
public Object instantiateItem(View arg0, int arg1) {
((ViewPager) arg0).addView(mListViews.get(arg1), position);
return mListViews.get(arg1);
} @Override
public boolean isViewFromObject(View arg0, Object arg1) {
return arg0 == (arg1);
} @Override
public void restoreState(Parcelable arg0, ClassLoader arg1) {
} @Override
public Parcelable saveState() {
return null;
} @Override
public void startUpdate(View arg0) {
}
} @Override
public void onPageScrollStateChanged(int arg0) {
// TODO Auto-generated method stub
}
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
// TODO Auto-generated method stub
}
@Override
public void onPageSelected(int arg0) {
// TODO Auto-generated method stub
getContent(arg0);
}}
你下载集成一下,有什么问题再说
嘿嘿,感谢。我那天那你很久没动静,又自己回去折腾了,还是用viewpager实现的,不过不预先加载。
没有冲突,之前用viewflipper是有冲突的,要重写webview。