天天看点

Android适配器的使用

accept_task.java

package com.example.surface_x;

import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ListView;
import android.widget.TextView;
import com.example.surface_x.Bean.Task;
import com.example.surface_x.Bean.User;
import com.example.surface_x.adapter.Adapter_AcceptTask;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

public class accept_task extends AppCompatActivity implements View.OnClickListener {

    private Button Points_sort,Distance_sort,Time_sort;//按积分,距离,时间排序
    private ListView listView; //list视图区域
    private Adapter_AcceptTask adapter_acceptTask;    //存放排序的适配器
    private List<Task>sort_list;    //存放任务的排序信息

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_accept_task);
        Points_sort = findViewById(R.id.Points_sort);
        Distance_sort = findViewById(R.id.Distance_sort);
        Time_sort = findViewById(R.id.Time_sort);
        listView = findViewById(R.id.lv_SortList);
      

        //初始化适配器
        init_List();

        Points_sort.setOnClickListener(this);
        Distance_sort.setOnClickListener(this);
        Time_sort.setOnClickListener(this);
    }

    /**
     * 以经纬度坐标为参数,向服务器发送一条请求,并接收服务器的数据显示
     * 第一次跳转在以下方法中进行数据的申请和显示
     */
    public void init_List(){
        //请求服务器,将服务器中的信息存放到List数组中

        User user = new User();
        user.setUsername("张三");
        //测试
        Task tk = new Task("找东西", "11米", 88, new Date(),"天津",user,"找东西");
        Task tk2 = new Task("看电影", "22米", 22, new Date(),"第三大街",user,"看电影");
        Task tk3 = new Task("听音乐", "33米", 33, new Date(),"宿舍",user,"听音乐");
        sort_list = new ArrayList<Task>();
        sort_list.add(tk);
        sort_list.add(tk2);
        sort_list.add(tk3);


        //适配器初始化
        adapter_acceptTask = new Adapter_AcceptTask(this,sort_list);
        listView.setAdapter(adapter_acceptTask);

    }

    /*
     * 这里需要请求服务器将服务器传来的数据存储到list中
     * 在点击积分排序事件中初始化适配器
     * */
    public void init_List_points(){
        //请求服务器,将服务器中的信息存放到List数组中
        //score参数用于发到服务器,判断
        String score ;




        //测试
        User user = new User();
        user.setUsername("李四");
        Task tj = new Task("坐车", "100千米", 22, new Date(),"天津站",user,"坐车");
        sort_list = new ArrayList<Task>();
        sort_list.add(tj);

        //适配器初始化
        adapter_acceptTask = new Adapter_AcceptTask(this,sort_list);
        listView.setAdapter(adapter_acceptTask);
    }

    /*
     * 这里需要请求服务器将服务器传来的数据存储到list中
     * 在点击距离排序事件中初始化适配器
     * */
    public void init_List_Distance(){
        //请求服务器,将服务器中的信息存放到List数组中
        //distance参数用于发到服务器,判断
        String distance ;



        //测试
        User user = new User();
        user.setUsername("赵五");
        Task td1 = new Task("吃", "1千米", 66, new Date(),"天津站",user,"吃");
        Task td2 = new Task("喝", "2千米", 22, new Date(),"河西站",user,"喝");
        Task td3 = new Task("玩", "3千米", 33, new Date(),"河东站",user,"玩");
        sort_list = new ArrayList<Task>();
        sort_list.add(td1);
        sort_list.add(td2);
        sort_list.add(td3);

        //初始化适配器
        adapter_acceptTask = new Adapter_AcceptTask(this,sort_list);
        listView.setAdapter(adapter_acceptTask);
    }

    /*
     * 这里需要请求服务器将服务器传来的数据存储到list中
     * 在点击时间排序事件中初始化适配器
     * */
    public void init_List_Time(){
        //请求服务器,将服务器中的信息存放到List数组中
        //time参数用于发到服务器,判断
        String time ;


        //测试
        User user = new User();
        user.setUsername("王六");
        Task td1 = new Task("去泰达", "10千米", 66, new Date(),"天津站",user,"坐车");
        Task td2 = new Task("去河西", "10千米", 66, new Date(),"河西区",user,"坐车");
        Task td3 = new Task("去河东", "10千米", 66, new Date(),"河东区",user,"坐车");
        Task td4 = new Task("去武清", "10千米", 66, new Date(),"武清区",user,"坐车");
        Task td5 = new Task("去北辰", "10千米", 66, new Date(),"北辰区",user,"坐车");
        Task td6 = new Task("去滨海", "10千米", 66, new Date(),"滨海区",user,"坐车");
        sort_list = new ArrayList<Task>();
        sort_list.add(td1);
        sort_list.add(td2);
        sort_list.add(td3);
        sort_list.add(td4);
        sort_list.add(td5);
        sort_list.add(td6);

        //初始化设配器
        adapter_acceptTask = new Adapter_AcceptTask(this,sort_list);
        listView.setAdapter(adapter_acceptTask);
    }


    @Override
    public void onClick(View view) {
        switch (view.getId()){
            case R.id.Points_sort :

                //测试
                init_List_points();
                break;
            case R.id.Distance_sort :

                //测试
                init_List_Distance();
                break;
            case R.id.Time_sort :

                //测试
                init_List_Time();
                break;

            default:
                break;

        }
    }
}
           

activity_accept_task.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    >
<LinearLayout
    android:layout_marginTop="10dp"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    >
    <Button
        android:id="@+id/Points_sort"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="按积分排序"
        android:layout_weight="1"
        android:background="@drawable/shape1"
        />

    <Button
        android:id="@+id/Distance_sort"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="按距离排序"
        android:layout_weight="1"
        android:background="@drawable/shape1"
        />

    <Button
        android:id="@+id/Time_sort"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="按结束时间排序"
        android:background="@drawable/shape1"
        android:layout_weight="1"
        />
</LinearLayout>
    <TextView
        android:id="@+id/text_lat_lon"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="10sp"
        android:visibility="gone"
        />
<!--  android:visibility="gone"-->

    <ListView
        android:id="@+id/lv_SortList"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_marginTop="8dp"
        android:background="#1659506A"
        android:paddingTop="10dp" />

</LinearLayout>
           

适配器Adapter_AcceptTask

package com.example.surface_x.adapter;

import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;
import com.example.surface_x.Bean.Task;
import com.example.surface_x.DetailActivity;
import com.example.surface_x.R;
import java.text.SimpleDateFormat;
import java.util.List;


public class Adapter_AcceptTask extends BaseAdapter {

    private Context context;            //map活动的context
    private List<Task> sort_list;       //存放服务器传来的数据
    private LayoutInflater _inflater;   //item布局

    public Adapter_AcceptTask(Context context,List<Task> sort_list){
        this.sort_list = sort_list;
        this.context = context;
        this._inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    }

    //存放控件
    class ViewHolder2 {
        public TextView list_name;      //人物名控件
        public TextView list_distance;  //距离控件
        public TextView list_score;     //积分控件
        public TextView list_time;      //时间控件
        public Button btn_detail;       //按键控件
        public ImageView task_img;      //左侧标题控件
        public TextView position_name,username,taskcontent;//任务地点、发布者名称、任务详细内容

    }

    //返回个数
    @Override
    public int getCount() {
        return sort_list.size();
    }

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

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

    @Override
    public View getView(int position, View convertView, ViewGroup viewGroup) {
        final ViewHolder2 vh;
        if (convertView == null) {//第一次进入适配器就绑定控件
            convertView = _inflater.inflate(R.layout.item_sort_list, null);
            vh = new ViewHolder2();
            vh.list_name = convertView.findViewById(R.id.list_name);
            vh.list_distance = convertView.findViewById(R.id.list_distance);
            vh.list_score = convertView.findViewById(R.id.list_score);
            vh.list_time = convertView.findViewById(R.id.list_time);
            vh.btn_detail = convertView.findViewById(R.id.btn_detail);
            vh.task_img = convertView.findViewById(R.id.task_img);
            vh.position_name = convertView.findViewById(R.id.position_name);
            vh.username = convertView.findViewById(R.id.position_username);
            vh.taskcontent = convertView.findViewById(R.id.taskcontent);
            //绑定控件
            convertView.setTag(vh);
        }else{
            vh = (Adapter_AcceptTask.ViewHolder2) convertView.getTag();
        }
        //得到相应的任务实体类
        final Task task = sort_list.get(position);
        if (task !=null){

            //显示到页面上
            vh.list_name.setText(task.getTaskname());//任务名
            vh.list_distance.setText(task.getDistance());//任务距离
            vh.list_score.setText(task.getTaskintegral().toString());//任务积分
            //自定义时间格式
            SimpleDateFormat fo = new SimpleDateFormat("YYYY-MM-dd HH:mm:ss");
            String date = fo.format(task.getTaskneedfishtime());

            vh.list_time.setText(date);//任务完成时间
            vh.position_name.setText(task.getPosition());//地点
            vh.username.setText(task.getPublisher().getUsername());//发布者
            vh.taskcontent.setText(task.getTaskcontent());//任务内容

        }

        vh.btn_detail.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                //详细信息页面
                Intent intent = new Intent(context, DetailActivity.class);
                Bundle bundle1 = new Bundle();
                Log.d("信息",vh.position_name.getText().toString()+vh.list_score.getText().toString()
                +vh.username.getText().toString()+vh.taskcontent.getText().toString());
                //1.任务地点
                bundle1.putString("position_name",vh.position_name.getText().toString());
                //2.任务的积分
                bundle1.putString("taskintegral",vh.list_score.getText().toString());
                //3.任务发布者昵称
                bundle1.putString("username",vh.username.getText().toString());
                //4.任务的详细信息(内容)
                bundle1.putString("taskcontent",vh.taskcontent.getText().toString());

                //数据传递并跳转到接收任务界面
                intent.putExtras(bundle1);
                context.startActivity(intent);

            }
        });
        return convertView;
    }

}

           

item_sort_list.xml设置每一个小item样式

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

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="5dp"
        android:background="@color/colorWhite"
        android:orientation="horizontal">

        <ImageView
            android:id="@+id/task_img"
            android:layout_width="98dp"
            android:layout_height="114dp"
            android:src="@drawable/task" />
        <RelativeLayout
            android:layout_width="210dp"
            android:layout_height="wrap_content">
        <TextView
            android:id="@+id/list_name"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:hint="任务名"
            android:textSize="23sp" />

        <TextView
            android:id="@+id/list_distance"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:hint="距离"
            android:textSize="22sp"
            android:layout_below="@+id/list_name"/>

        <TextView
            android:id="@+id/list_score"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:hint="积分"
            android:textSize="22sp"
            android:layout_below="@+id/list_distance"/>

        <TextView
            android:id="@+id/list_time"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:hint="时间"
            android:textSize="22sp"
            android:layout_below="@+id/list_score"/>

        <TextView
            android:id="@+id/position_name"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textSize="22sp"
            android:layout_below="@+id/list_score"
            android:visibility="gone"
            />
        <TextView
            android:id="@+id/position_username"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textSize="22sp"
            android:layout_below="@+id/list_score"
            android:visibility="gone"
            />
        <TextView
            android:id="@+id/taskcontent"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textSize="22sp"
            android:layout_below="@+id/list_score"
            android:visibility="gone"
            />

        </RelativeLayout>
        <Button
            android:id="@+id/btn_detail"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="详情"
            android:background="@drawable/white"
            android:textColor="#0BD5C1"
            android:layout_gravity="center"
            android:textSize="23sp"
            />
    </LinearLayout>


</LinearLayout>
           

结果图,上面三个按钮代表不同的ListView。

Android适配器的使用