总结
这一章主要实现微信精选模块的功能,也是调用接口解析json,跳页面,传值,实现webView。。。嗯 就这些!!!
实现BaseAdapter作为ListView的Adapter
不多比比,贴代码吧
public class wxAdapter extends BaseAdapter {
private Context mContext;
private LayoutInflater inflater;
private weinxinData data;
private List<weinxinData> mlist;
public TextView title;
public TextView weixinname;
public wxAdapter(Context mContext, List<weinxinData> mlist) {
this.mContext = mContext;
inflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
this.mlist = mlist;
}
}
@Override
public int getCount() {
return mlist.size();
}
@Override
public Object getItem(int position) {
return mlist.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
viewHolder viewHolder = null;
if (convertView==null){
viewHolder=new viewHolder();
convertView=inflater.inflate(R.layout.weixin_item,null);
viewHolder.title= (TextView) convertView.findViewById(R.id.weixin_item_title_tv);
viewHolder.weixinname=(TextView)convertView.findViewById(R.id.weixin_item_weixinname_tv);
convertView.setTag(viewHolder);
}else {
viewHolder= (com.example.myapplication.entity.viewHolder) convertView.getTag();
}
weinxinData data=mlist.get(position);
viewHolder.title.setText(data.getTitle());
viewHolder.weixinname.setText(data.getWeixinname());
return convertView;
}
}
使用的viewHolder
public class viewHolder {
public TextView title;
public TextView weixinname;
}
Fragment中实现逻辑
public class wxFragment extends Fragment {
private ListView mlistView;
private List<weinxinData> mlist;
private List<String> mtitle;
private List<String> murl;
//数据接口
private String url="http://api.jisuapi.com/weixinarticle/get?channelid=1&start=0&num=10&appkey=c7b6a14799a0d2a9";
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.weixinlayout, container, false);
findView(view);
return view;
}
private void findView(View view) {
mlistView= (ListView) view.findViewById(R.id.weixin_listVIew);
mlist=new ArrayList<>();
mtitle=new ArrayList<>();
murl=new ArrayList<>();
RxVolley.get(url, new HttpCallback() {
@Override
public void onSuccess(String t) {
super.onSuccess(t);
prasingUrl(t);
}
});
//ListView的一条的点击事件
mlistView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
//传值跳页面
Intent intent=new Intent(getActivity(),webViewActity.class);
intent.putExtra("title",mtitle.get(position));
intent.putExtra("url",murl.get(position));
startActivity(intent);
}
});
}
//解析JSON
private void prasingUrl(String t) {
try {
JSONObject jsonObject=new JSONObject(t);
JSONObject jsonResult=jsonObject.getJSONObject("result");
JSONArray jsonArray=jsonResult.getJSONArray("list");
for (int i = 0; i <jsonArray.length() ; i++) {
JSONObject jsonObject1=jsonArray.getJSONObject(i);
String Stitle=jsonObject1.getString("title");
String URL=jsonObject1.getString("url");
String Sweixinname=jsonObject1.getString("weixinname");
L.i("title:"+Stitle+Sweixinname);
weinxinData data = new weinxinData(Stitle,Sweixinname);
mlist.add(data);
mtitle.add(Stitle);
murl.add(URL);
}
wxAdapter weixinAdapter=new wxAdapter(getActivity(),mlist);
mlistView.setAdapter(weixinAdapter);
} catch (JSONException e) {
e.printStackTrace();
}
}
}
WebView实现加载
public class webViewActity extends BaseActivity {
private WebView mWebView;
public ProgressBar mProgressBar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.web);
initView();
}
private void initView() {
mWebView= (WebView) findViewById(R.id.mWebView);
mProgressBar= (ProgressBar) findViewById(R.id.mProgress);
Intent intent=getIntent();
final String title=intent.getStringExtra("title");
final String url=intent.getStringExtra("url");
//设置标题
getSupportActionBar().setTitle(title);
//进行加载网页的逻辑
//支持JS
mWebView.getSettings().setJavaScriptEnabled(true);
//支持缩放
mWebView.getSettings().setSupportZoom(true);
mWebView.getSettings().setBuiltInZoomControls(true);
//接口回调
mWebView.setWebChromeClient(new WebChromeClient(){
public void onProgressChanged(WebView view, int newProgress) {
if(newProgress == 100){
mProgressBar.setVisibility(View.GONE);
}
super.onProgressChanged(view, newProgress);
}
});
//加载网页
mWebView.loadUrl(url);
//本地显示
mWebView.setWebViewClient(new android.webkit.WebViewClient(){
@Override
public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
view.loadUrl(url);
//我接受这个事件
return true;
}
});
}
}
布局就一个WebView一个进度条