Desarrollo de Android: generar dinámicamente TextView

Tal vez los amigos encuentren tal requisito en el proceso de desarrollo de Android: la necesidad de mostrar la información de la lista de forma dinámica; aquí tomo como ejemplo la pantalla de publicación de información de la conferencia que desarrollé recientemente.

Luego, la pantalla de publicación de la reserva de reunión debe mostrar la información de la reserva de reunión del día. El problema es que no sé si hay una reserva de reunión en este día, por lo que no sé cuántas etiquetas TextView se necesitan. Si se trata de un desarrollo ordinario de Java+jsp o Vue, este requisito es muy simple; el primero solo necesita introducir la biblioteca de etiquetas jstl y cooperar con la expresión el para completar fácilmente el requisito, y el segundo también puede cumplir fácilmente el requisito utilizando Elemento UI. Entonces, en el desarrollo de Android, ¿cómo se debe lograr este efecto? ¡Esta es la etiqueta <ListView> que compartí contigo hoy! Sin más preámbulos, ¡vamos al código!

1. Agregue el archivo de diseño que necesita para generar dinámicamente la etiqueta TextView

 Si no desea tocar con la mano, puede seleccionar directamente el modo de vista Diseño en la esquina superior derecha y arrastrar para ajustar

2. Cree un nuevo archivo list_view.xml (el nombre no importa, puede personalizarlo) y configure el diseño de TextView en él

 

 Igual que arriba, si no desea tocarlo con la mano, puede abrir directamente el ajuste del modo de vista Diseño, puede agregar tantas vistas de texto como desee, de acuerdo con su propio diseño de página

3. Recorra los datos requeridos en el método onGreat del archivo .java de su archivo de diseño cargado dinámicamente

@Override
    public void showResponse(List<TCrConferenceReservation> result) {
        Date date = new Date();
        //动态加载TextView
        ListView listView = (ListView) findViewById(R.id.list);
        List<ConferenceReservationVO> list = new ArrayList<>();
        for (TCrConferenceReservation c : result) {
            if (DateUtils.isToday(DateUtils.convertDate(c.getStartTime(),"yyyy-MM-dd HH:mm").getTime()) && (DateUtils.convertDate(c.getEndTime(),"yyyy-MM-dd HH:mm").getTime() > date.getTime())){
            ConferenceReservationVO conferenceReservationVO = new ConferenceReservationVO();
            conferenceReservationVO.setId(c.getId());
            conferenceReservationVO.setName(c.getName());
            conferenceReservationVO.setIntroduction(c.getIntroduction());
            conferenceReservationVO.setEmployeeName(c.getEmployeeName());
            conferenceReservationVO.setDepartmentName(c.getDepartmentName());
            conferenceReservationVO.setCreateTime(c.getCreateTime());
            conferenceReservationVO.setStartTime(c.getStartTime());
            conferenceReservationVO.setEndTime(c.getEndTime());
            String startTime = c.getStartTime().substring(11, 16);
            String endTime = c.getEndTime().substring(11, 16);
            String times = startTime + "-" + endTime;
            conferenceReservationVO.setTimeQuantum(times);
            String conInFo = times + " | " + c.getEmployeeName() + " | " + c.getDepartmentName();
            conferenceReservationVO.setConferenceInformation(conInFo);
            list.add(conferenceReservationVO);
            }
        }
        //预约会议时间段
        TextView conferenceTime = (TextView) findViewById(R.id.conferenceTime);
        //预约会议名
        TextView conferenceName = (TextView) findViewById(R.id.conferenceName);
        //预约会议人
        TextView employeeName = (TextView) findViewById(R.id.employeeName);
        //部门名
        TextView departmentName = (TextView) findViewById(R.id.departmentName);
        //当前时间
        TextView currentTime = (TextView) findViewById(R.id.currentTime);
        //会议状态
        TextView fokus = (TextView) findViewById(R.id.fokus);
        //分割线
        TextView border = (TextView) findViewById(R.id.border);
        //今日会议数
        TextView count = (TextView) findViewById(R.id.count);
        if (list.size() > 0) {
            if (date.getTime() < DateUtils.convertDate(list.get(0).getStartTime(),"yyyy-MM-dd HH:mm").getTime()){
                fokus.setText("下一个会议");
                border.setBackgroundColor(Color.parseColor("#FB9F4A"));
            }
            conferenceTime.setText(list.get(0).getTimeQuantum());
            conferenceName.setText(list.get(0).getName());
            employeeName.setText(list.get(0).getEmployeeName());
            departmentName.setText(list.get(0).getDepartmentName());
            currentTime.setText(DateUtils.Format(date, "yyyy/MM/dd HH:mm"));
            count.setText("今日会议 " + list.size());
        }else {
            list.add(new ConferenceReservationVO());
            fokus.setText("会议空闲中");
            border.setBackgroundColor(Color.WHITE);
            conferenceName.setText("暂无会议");
            conferenceTime.setText("无");
            employeeName.setText("无");
            departmentName.setText("无");
            count.setText("今日会议 " + list.size());
        }
        listView.setAdapter(new MyAdapter(list,this));
    }

Estoy aquí porque agregué una base de datos en la aplicación, así que no la escribí con el método onGreat. Si está interesado en presentar una base de datos, publicaré un blog para compartirlo con usted más tarde.

4. Cree una nueva clase MyAdapter para heredar de la clase BaseAdapter (el nombre lo define usted mismo)

public class MyAdapter extends BaseAdapter {

    private List<ConferenceReservationVO> data;
    private Context context;
    @Override
    public int getCount() {
        return data.size();
    }

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

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

    @Override
    public boolean isEnabled(int position) {
        return false;
    }

    @Override
    public View getView(int i, View con, ViewGroup viewGroup) {
        ViewHolder viewHolder;
        View view;
        Date date = new Date();
        if (con == null) {
            view = LayoutInflater.from(context).inflate(R.layout.list_view,null);
            viewHolder = new ViewHolder(view);
            view.setTag(viewHolder);
        } else {
            view = con;
            viewHolder = (ViewHolder) view.getTag();
        }
        if (data.get(i).getTimeQuantum() != null) {
            viewHolder.textView.setText(data.get(i).getName());
            viewHolder.info.setText(data.get(i).getConferenceInformation());
            LinearLayout.LayoutParams lp = (LinearLayout.LayoutParams) viewHolder.textView.getLayoutParams();
            lp.topMargin = 40;
            if (i == 0) {
                if ((DateUtils.convertDate(data.get(0).getStartTime(),"yyyy-MM-dd HH:mm").getTime() < date.getTime()) && (DateUtils.convertDate(data.get(0).getEndTime(),"yyyy-MM-dd HH:mm").getTime() > date.getTime())){
                    System.out.println(DateUtils.convertDate(data.get(0).getEndTime(),"yyyy-MM-dd HH:mm").getTime() > date.getTime());
                    System.out.println("data.get(0).getEndTime() = " + data.get(0).getEndTime());
                    viewHolder.tv.setBackgroundColor(Color.parseColor("#5DC755"));
                }else if ((DateUtils.convertDate(data.get(0).getStartTime(),"yyyy-MM-dd HH:mm").getTime() > date.getTime())) {
                    viewHolder.tv.setBackgroundColor(Color.parseColor("#FB9F4A"));
                }
            }
        } else {
            LinearLayout.LayoutParams lp = (LinearLayout.LayoutParams) viewHolder.textView.getLayoutParams();
            lp.topMargin = 90;
            viewHolder.textView.getLayoutParams();
            viewHolder.textView.setText("暂无会议");
        }


        return view;
    }

    private final class ViewHolder{
        TextView textView;
        TextView info;
        TextView tv;
        public ViewHolder(View view) {
            textView = (TextView) view.findViewById(R.id.name);
            info  = (TextView) view.findViewById(R.id.info);
            tv = (TextView) view.findViewById(R.id.tv);
        }
    }

    public MyAdapter(List<ConferenceReservationVO> data, Context context) {
        this.data = data;
        this.context = context;
    }
}

Esto es suficiente, de hecho, son solo unos pocos pasos, por supuesto, esto es solo un uso muy elemental, porque todavía estoy aprendiendo. Bueno, el efecto de comenzar es el siguiente:

 Debido a que Xiaojie también está aprendiendo el desarrollo de Android, si tienen un método mejor o encuentran algo mal conmigo, ¡corríjanme a tiempo! Si hay amigos que también están estudiando y tienen algo que no les queda claro, ¡también pueden comentar o enviar un mensaje privado para discutir juntos!

Supongo que te gusta

Origin blog.csdn.net/m0_64055755/article/details/127534164
Recomendado
Clasificación