咨询项目实战——xlistview,侧拉菜单

MainActivity


-----------------------------------------------------------------------------------------------------------------------------------

package com.example.myapplication;

import android.os.Bundle;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.LinearLayout;
import android.widget.ListView;

import java.util.ArrayList;
import java.util.List;

public class MainActivity extends AppCompatActivity {

    private DrawerLayout drawerLayout;
    private LinearLayout menu;
    private List<String> datas;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        drawerLayout = (DrawerLayout) findViewById(R.id.drawer);
        menu = (LinearLayout) findViewById(R.id.menu);

        ListView lv=(ListView) findViewById(R.id.lv);
        datas = new ArrayList<String>();
        datas.add("新闻");
        datas.add("关注");
        datas.add("动态");
        datas.add("设置");


        ArrayAdapter<String> adapter=new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, datas);


        lv.setAdapter(adapter);
        lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {


            private F1 f1;

            @Override
            public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
                drawerLayout.closeDrawer(menu);

                Bundle bundle=new Bundle();
                bundle.putString("key",datas.get(i));
                bundle.putInt("page",i+1);

                f1 = new F1();
                f1.setArguments(bundle);
                getSupportFragmentManager().beginTransaction().replace(R.id.frcontent,f1).commit();

            }
        });

    }
}
 
 
 
 
F1
 
 
_________________________________________________________________________________
 
 
 
 
package com.example.myapplication;

import android.os.AsyncTask;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;

import com.example.myapplication.view.XListView;
import com.google.gson.Gson;

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

/**
 * Created by dyz on 2017/11/11/0011.
 */

public class F1 extends Fragment {

    private XListView xlv;

    private List<Bean.DataBean>list=new ArrayList<Bean.DataBean>();
    int type=1;
    int page=1;
    private MyAdapter adapter;
    private Bundle bundle;

    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {

        View v1 = inflater.inflate(R.layout.f1, container, false);

        xlv = (XListView) v1.findViewById(R.id.xlv);
        TextView textView=(TextView) v1.findViewById(R.id.textview);
        bundle = getArguments();

        textView.setText(bundle.getString("key"));

        xlv.setPullRefreshEnable(true);
        xlv.setPullLoadEnable(true);


        xlv.setXListViewListener(new XListView.IXListViewListener() {
            @Override
            public void onRefresh() {
                page++;
                AsyncTask<Void,Void,String>asyncTask=new AsyncTask<Void, Void, String>() {
                    @Override
                    protected String doInBackground(Void... voids) {

                        String path="http://api.expoon.com/AppNews/getNewsList/type/1/p/"+page+"";

                        try {
                            URL url=new URL(path);
                            HttpURLConnection connection=(HttpURLConnection) url.openConnection();
                            connection.setRequestMethod("GET");
                            connection.setConnectTimeout(10000);
                            connection.setReadTimeout(10000);
                            if(connection.getResponseCode()==200)
                            {

                                InputStream is = connection.getInputStream();

                                String json = streamToString(is, "utf-8");

                                return json;

                            }

                        } catch (Exception e) {
                            e.printStackTrace();
                        }

                        return null;

                    }

                    @Override
                    protected void onPostExecute(String s) {

                        Log.d("LOG","++++++++++++"+s);

                        Gson gson=new Gson();
                        Bean bean = gson.fromJson(s, Bean.class);
                        list.clear();
                        list.addAll(0,bean.getData());
                        setAdapter();
                        xlv.stopRefresh();
                        Date date=new Date(System.currentTimeMillis());
                        SimpleDateFormat simpleDateFormat=new SimpleDateFormat("HH:mm");
                        xlv.setRefreshTime(simpleDateFormat.format(date));



                    }
                };


                asyncTask.execute();
            }

            @Override
            public void onLoadMore() {
                getDataFromNet();
            }
        });


        getDataFromNet();


        return v1;
    }

    private  void getDataFromNet(){

        AsyncTask<Void,Void,String>asyncTask=new AsyncTask<Void, Void, String>() {
            @Override
            protected String doInBackground(Void... voids) {

                String path="http://api.expoon.com/AppNews/getNewsList/type/1/p/"+bundle.getInt("page")+"";

                try {
                    URL url=new URL(path);
                     HttpURLConnection connection=(HttpURLConnection) url.openConnection();
                    connection.setRequestMethod("GET");
                    connection.setConnectTimeout(10000);
                    connection.setReadTimeout(10000);
                    if(connection.getResponseCode()==200)
                    {
                        InputStream is = connection.getInputStream();

                        String json = streamToString(is, "utf-8");

                        return json;

                    }

                } catch (Exception e) {
                    e.printStackTrace();
                }

                return null;

            }

            @Override
            protected void onPostExecute(String s) {

                Gson gson=new Gson();
                Bean bean = gson.fromJson(s, Bean.class);
                list.addAll(bean.getData());
                setAdapter();
                xlv.stopLoadMore();


            }
        };


asyncTask.execute();

    }

    private void setAdapter(){

        if(adapter==null){
            adapter = new MyAdapter(list,getActivity());
            xlv.setAdapter(adapter);
        }
        else{
            adapter.notifyDataSetChanged();
        }

    }

    private String streamToString(InputStream inputStream,String charset) {
        try {
            InputStreamReader inputStreamReader = new InputStreamReader(inputStream,charset);

            BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
            String s = null;
            StringBuilder builder = new StringBuilder();
            while ((s = bufferedReader.readLine()) != null){
                builder.append(s);
            }

            bufferedReader.close();
            return builder.toString();

        } catch (Exception e) {
            e.printStackTrace();
        }

        return  null;
    }





}
activity_main.xml
 
 
_____________________________________________________________________________________________
 
 
 
 
<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
    android:layout_height="match_parent" tools:context="com.example.myapplication.MainActivity"
    android:id="@+id/drawer"
    >

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        >
        

        <FrameLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:id="@+id/frcontent"
            ></FrameLayout>
        
    </LinearLayout>
    
    <LinearLayout
        android:layout_width="240dp"
        android:layout_height="match_parent"
        android:orientation="vertical"
        android:layout_gravity="start"
        android:background="#ccc"
        android:id="@+id/menu"
        >

        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/img"
            android:src="@mipmap/ic_launcher"
            />
        <ListView
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:id="@+id/lv"
            ></ListView>

    </LinearLayout>

</android.support.v4.widget.DrawerLayout>
 
 
 
 
MyAdapter
 
 
_____________________________________________________________________________________
 
 
 
 
package com.example.myapplication;

import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;

import java.util.ArrayList;
import java.util.List;

/**
 * Created by dyz on 2017/11/11/0011.
 */

public class MyAdapter extends BaseAdapter {
    private List<Bean.DataBean> list=new ArrayList<Bean.DataBean>();
    Context context;

    public MyAdapter(List<Bean.DataBean> list, Context context) {
        this.list = list;
        this.context = context;
    }

    @Override
    public int getCount() {
        return list.size();
    }

    @Override
    public Object getItem(int i) {
        return list.get(i);
    }

    @Override
    public long getItemId(int i) {
        return i;
    }

    @Override
    public View getView(int i, View view, ViewGroup viewGroup) {

        View v1 = View.inflate(context, R.layout.ff, null);
        TextView shang=(TextView) v1.findViewById(R.id.shang);
        shang.setText(list.get(i).getNews_title());

        return v1;
    }
}
f1.xml
___________________________________________________________________________
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/textview"
        />

    <com.example.myapplication.view.XListView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/xlv">
    </com.example.myapplication.view.XListView>


</LinearLayout>
 
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值