222XListview+多条目+AsyncTask

本文详细介绍了如何在Android应用中使用Fragment实现页面切换,并结合XListView实现带有上拉加载和下拉刷新功能的列表视图。同时,展示了如何通过AsyncTask进行网络请求,更新列表数据。

Fragment的页面
public class MainActivity extends FragmentActivity {
private RadioGroup group;
private FrameLayout fragment;
private Fragment f1;
private Fragment f2;
private Fragment f3;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    fragment=(FrameLayout) findViewById(R.id.fragment);
    group=(RadioGroup) findViewById(R.id.group);

    f1 = new FragmentOne();
    f2 = new FragmentTwo();
    f3 = new FragmentThree();

    setaddfragment(f1);
    group.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(RadioGroup radioGroup, int i) {
            switch (i){
                case R.id.but1:
                    setaddfragment(f1);
                    break;
                case R.id.but2:
                    setaddfragment(f2);
                    break;
                case R.id.but3:
                    setaddfragment(f3);
                    break;
            }
        }
    });
}
private void setaddfragment(Fragment fragment1){
    FragmentManager supportFragmentManager = getSupportFragmentManager();
    FragmentTransaction beginTransaction = supportFragmentManager.beginTransaction();
    beginTransaction.replace(R.id.fragment,fragment1);
    beginTransaction.commit();
}

}
XListview的步骤+AsyncTask的接受网络请求
public class FragmentOne extends Fragment {
private XListView Xlistview;
private MyAdapter myAdapter;
private MyBean myBean;
private List<MyBean.DataBean> list=new ArrayList<>();
private String url=“http://api.expoon.com/AppNews/getNewsList/type/1/p/1”;
private int page;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragmentone, container, false);
Xlistview=(XListView) view.findViewById(R.id.Xlistview);
Xlistview.setPullLoadEnable(true);//开启上拉加载更多功能
new MyAsyn().execute(url);
initData(page);//请求网络数据

//设置上下拉的逻辑
Xlistview.setXListViewListener(new XListView.IXListViewListener() {
@Override
//下拉刷新
public void onRefresh() {
page=0;
initData(page);
}
@Override
//上拉加载更多;
public void onLoadMore() {
page++;
initData(page);
}
});
return view;
}

public void initData(int page){
    String s = url + page;
    new MyAsyn().execute(s);
}

class MyAsyn extends AsyncTask<String,Void,String>{

    @Override
    protected String doInBackground(String... strings) {
        String sa = MyWork.sa(strings[0]);
        return sa;
    }

    @Override
    protected void onPostExecute(String s) {
        super.onPostExecute(s);
        Gson gson = new Gson();
        myBean = gson.fromJson(s, MyBean.class);
        List<MyBean.DataBean> data = myBean.getData();
        list.addAll(data);
        myAdapter = new MyAdapter(getActivity(), list);
        Xlistview.setAdapter(myAdapter);
        uiComplete();//让刷新头和刷新底部隐藏;
    }
}

private void uiComplete(){
    Xlistview.setRefreshTime("刚刚");
    Xlistview.stopRefresh();//隐藏刷新头部
    Xlistview.stopLoadMore();//隐藏刷新脚部
}

}
多条目
public class MyAdapter extends BaseAdapter {
private Context context;
private List<MyBean.DataBean> list;

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

@Override
public int getItemViewType(int position) {
    return position%2;
}

@Override
public int getViewTypeCount() {
    return 2;
}

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

@Override
public Object getItem(int i) {
    return null;
}

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

@Override
public View getView(int i, View view, ViewGroup viewGroup) {
    int itemViewType = getItemViewType(i);
    switch (itemViewType){
        case 0:
            ViewHolder1 holder1;
            if (view==null){
                view=View.inflate(context,R.layout.item1,null);
                holder1=new ViewHolder1();
                holder1.text1=view.findViewById(R.id.text1);
                holder1.text2=view.findViewById(R.id.text2);
                holder1.image=view.findViewById(R.id.image);
                view.setTag(holder1);
            }else {
                holder1= (ViewHolder1) view.getTag();
            }
            holder1.text1.setText(list.get(i).getNews_summary());
            holder1.text2.setText(list.get(i).getNews_title());
            ImageLoader.getInstance().displayImage(list.get(i).getPic_url(),holder1.image);
            break;
        case 1:
            ViewHolder2 holder2;
            if (view==null){
                view=View.inflate(context,R.layout.item2,null);
                holder2=new ViewHolder2();
                holder2.tv1=view.findViewById(R.id.tv1);
                holder2.tv2=view.findViewById(R.id.tv2);
                view.setTag(holder2);
            }else {
                holder2= (ViewHolder2) view.getTag();
            }
            holder2.tv1.setText(list.get(i).getNews_summary());
            holder2.tv2.setText(list.get(i).getNews_title());
            break;
    }
    return view;
}
class ViewHolder1{
    TextView text1,text2;
    ImageView image;
}
class ViewHolder2{
    TextView tv1,tv2;
}

}
设置圆角
public class MyApp extends Application {
@Override
public void onCreate() {
super.onCreate();
// ImageLoaderConfiguration build = new ImageLoaderConfiguration.Builder(this).build();
// ImageLoader.getInstance().init(build);
//给图片设置圆角
DisplayImageOptions displayImageOptions=new DisplayImageOptions.Builder()
.displayer(new RoundedBitmapDisplayer(20))
.build();
ImageLoaderConfiguration imageLoaderConfiguration=new ImageLoaderConfiguration.Builder(this)
.defaultDisplayImageOptions(displayImageOptions)
.build();
ImageLoader.getInstance().init(imageLoaderConfiguration);
}
}
网络请求
public class MyWork {
public static String sa(String url){
try {
URL url1 = new URL(url);
HttpURLConnection connection = (HttpURLConnection) url1.openConnection();
int code = connection.getResponseCode();
if (code==200){
InputStream inputStream = connection.getInputStream();
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
StringBuffer stringBuffer = new StringBuffer();
String temp;
while ((temp=bufferedReader.readLine())!=null){
stringBuffer.append(temp);
}
return stringBuffer.toString();
}
}catch (Exception e){
e.printStackTrace();
}
return “”;
}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值