XListView的思路
新建项目,然后File-new-import module -选择我们的XlistView库导入,然后给App导入依赖.
导入后可能会有错误,这时别慌,稳住.
1.查看是否有Xlistviewlib文件夹
2.查看setting文件中 是否有, ':xlistviewlib'
3.build.gradle文件中26改成28
4.
修改成方框中这样
5.导入网络权限
6.
==========================下面是Fragment=======================================
public class Fragment_01 extends Fragment { private XListView lv; private String url="http://www.xieast.com/api/news/news.php?page=";//接口路径 private List<UserBean.DataBean> list; private List<UserBean.DataBean> lists = new ArrayList<>(); private MyAdapter adapter; private int page=1;//接口分页中的数量 @Nullable @Override public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_01,container,false); lv = (XListView) view.findViewById(R.id.lv); init(); adapter = new MyAdapter(getActivity()); lv.setAdapter(adapter); lv.setPullLoadEnable(true);//允许下拉刷新 //下拉监听事件 lv.setXListViewListener(new XListView.IXListViewListener() { @Override public void onRefresh() { //下拉刷新 init(); } @Override public void onLoadMore() { //上拉加载 page++; init(); } }); return view; } private void init() { new AsyncTask<String,Void,String>(){ private String s; @Override protected void onPostExecute(String s) { super.onPostExecute(s); Gson gson = new Gson(); UserBean bean = gson.fromJson(s, UserBean.class); list = bean.getData(); // Toast.makeText(getActivity(), list+"", Toast.LENGTH_SHORT).show(); lists.addAll(list);//将所有的list数据存入lists中 adapter.setList(lists);//adapter获取lists中的数据 lv.stopRefresh();//停止下拉刷新 lv.stopLoadMore();//停止上拉刷新 } @Override protected String doInBackground(String... strings) { try { URL url = new URL(strings[0]); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.setRequestMethod("GET"); connection.setConnectTimeout(5000); connection.setReadTimeout(5000); if(connection.getResponseCode()==HttpURLConnection.HTTP_OK){ InputStream inputStream = connection.getInputStream(); s = CharStreams.toString(new InputStreamReader(inputStream, "utf-8")); return s; } } catch (Exception e) { e.printStackTrace(); } return null; } }.execute(url+page); } }
==============================以下是adapter适配器==================================================
public class MyAdapter extends BaseAdapter { private Context context; private List<UserBean.DataBean> list=new ArrayList<>(); public MyAdapter(Context context) { this.context = context; } public List<UserBean.DataBean> getList() { return list; } public void setList(List<UserBean.DataBean> list) { this.list = list; notifyDataSetChanged(); } //手动添加 @Override public int getViewTypeCount() { return 2; } //判断listview条目中图片是否还有第二个图片,如果有第二张图片就执行return=1的方法,展示拖条目 //如果没有第二张图片,就正常展示listview @Override public int getItemViewType(int position) { if(list.get(position).getThumbnail_pic_s02()!=null){ return 1; }else{ return 0; } } @Override public int getCount() { return list.size(); } @Override public Object getItem(int position) { return null; } @Override public long getItemId(int position) { return 0; } @Override public View getView(int position, View convertView, ViewGroup parent) { int itemViewType = getItemViewType(position); ViewHolder holder; ViewHolder1 viewHolder1; if(itemViewType==0){ if(convertView==null){ convertView = View.inflate(context,R.layout.item_tv,null); holder = new ViewHolder(); holder.image = convertView.findViewById(R.id.image); holder.tv1 = convertView.findViewById(R.id.tv1); holder.tv2 = convertView.findViewById(R.id.tv2); convertView.setTag(holder); }else{ holder = (ViewHolder) convertView.getTag(); } ImageLoader.getInstance().displayImage(list.get(position).getThumbnail_pic_s(),holder.image); holder.tv1.setText(list.get(position).getTitle()); holder.tv2.setText(list.get(position).getAuthor_name()); }else if(itemViewType==1){ if(convertView==null){ convertView = View.inflate(context,R.layout.lay_1,null); viewHolder1 = new ViewHolder1(); viewHolder1.img1 = convertView.findViewById(R.id.img1); viewHolder1.img2 = convertView.findViewById(R.id.img2); viewHolder1.img3 = convertView.findViewById(R.id.img3); viewHolder1.title = convertView.findViewById(R.id.title); convertView.setTag(viewHolder1); }else{ viewHolder1 = (ViewHolder1) convertView.getTag(); } ImageLoader.getInstance().displayImage(list.get(position).getThumbnail_pic_s(),viewHolder1.img1); ImageLoader.getInstance().displayImage(list.get(position).getThumbnail_pic_s02(),viewHolder1.img2); ImageLoader.getInstance().displayImage(list.get(position).getThumbnail_pic_s03(),viewHolder1.img3); viewHolder1.title.setText(list.get(position).getTitle()); } return convertView; } class ViewHolder{ TextView tv1,tv2; ImageView image; } class ViewHolder1{ TextView title; ImageView img1,img2,img3; } }
=============================以下是ImageLoader中的app类============================================
public class MyApp extends Application { @Override public void onCreate() { super.onCreate(); ImageLoaderConfiguration build = new ImageLoaderConfiguration.Builder(this).build(); ImageLoader.getInstance().init(build); } }
=================================以下是侧拉菜单===================================================
public class MainActivity extends FragmentActivity { private FragmentManager manager; private ArrayList<Fragment> list; private ViewPager vp; private RadioGroup rg; private ListView listView; private List<String> titles = new ArrayList<>(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); titles.add("首页"); titles.add("小视频"); titles.add(" 我的"); manager = getSupportFragmentManager(); listView = findViewById(R.id.listview); list = new ArrayList<>(); Fragment_01 fragment_01 = new Fragment_01(); Fragment_02 fragment_02 = new Fragment_02(); Fragment_03 fragment_03 = new Fragment_03(); list.add(fragment_01); list.add(fragment_02); list.add(fragment_03); vp = (ViewPager) findViewById(R.id.vp); rg = (RadioGroup) findViewById(R.id.rg); ArrayAdapter<String> arrayAdapter = new ArrayAdapter<>(MainActivity.this, android.R.layout.simple_list_item_1, android.R.id.text1, titles); listView.setAdapter(arrayAdapter); listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { } }); vp.setAdapter(new FragmentPagerAdapter(manager) { @Override public Fragment getItem(int i) { return list.get(i); } @Override public int getCount() { return list.size(); } }); rg.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() { @Override public void onCheckedChanged(RadioGroup group, int checkedId) { switch (checkedId) { case 1: vp.setCurrentItem(0); break; case 2: vp.setCurrentItem(1); break; case 3: vp.setCurrentItem(2); break; case 4: vp.setCurrentItem(3); break; } } }); vp.setOnPageChangeListener(new ViewPager.OnPageChangeListener() { @Override public void onPageScrolled(int i, float v, int i1) { } @Override public void onPageSelected(int i) { rg.check(rg.getChildAt(i).getId()); } @Override public void onPageScrollStateChanged(int i) { } }); } }