在Android Studio中的viewHolder自定义列表中放置一个开关
我已经创建了一个应用程序,一个个性化列表,其中包含来自Web服务的数据,正如您看到的,它的一个字段是state,但这会以数字(0,1,2)的形式返回给您。我想做的是将它放在“VACANTE”、“occupated”、“RESERVED”中,这是通过一个开关实现的,但我不知道如何应用它在Android Studio中的viewHolder自定义列表中放置一个开关,android,Android,我已经创建了一个应用程序,一个个性化列表,其中包含来自Web服务的数据,正如您看到的,它的一个字段是state,但这会以数字(0,1,2)的形式返回给您。我想做的是将它放在“VACANTE”、“occupated”、“RESERVED”中,这是通过一个开关实现的,但我不知道如何应用它 viewHolder.estado.setText(items.get(i).getEstado());//number (0,1,2) 这是我从PHP Web服务中提取的数据这是我当前的代码: public c
viewHolder.estado.setText(items.get(i).getEstado());//number (0,1,2)
这是我从PHP Web服务中提取的数据这是我当前的代码:
public class MetaAdapter extends RecyclerView.Adapter<MetaAdapter.MetaViewHolder>
implements ItemClickListener {
/**
* Lista de objetos {@link Meta} que representan la fuente de datos
* de inflado
*/
private List<Plaza> items;
/*
Contexto donde actua el recycler view
*/
private Context context;
public MetaAdapter(List<Plaza> items, Context context) {
this.context = context;
this.items = items;
}
@Override
public int getItemCount() {
return items.size();
}
@Override
public MetaViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
View v = LayoutInflater.from(viewGroup.getContext())
.inflate(R.layout.item_list, viewGroup, false);
return new MetaViewHolder(v, this);
}
@Override
public void onBindViewHolder(MetaViewHolder viewHolder, int i) {
viewHolder.nivel.setText(items.get(i).getNivel());
viewHolder.estado.setText(items.get(i).getEstado());
viewHolder.colegio.setText(items.get(i).getIe());
viewHolder.especialidad.setText(items.get(i).getEspecialidad());
viewHolder.codigo.setText(items.get(i).getCodigoPlaza());
}
/**
* Sobrescritura del método de la interfaz {@link ItemClickListener}
*
* @param view item actual
* @param position posición del item actual
*/
@Override
public void onItemClick(View view, int position) {
DetailActivity.launch(
(Activity) context, items.get(position).getPlazaID());
}
public static class MetaViewHolder extends RecyclerView.ViewHolder
implements View.OnClickListener {
// Campos respectivos de un item
public TextView nivel;
public TextView estado;
public TextView colegio;
public TextView especialidad;
public TextView codigo;
public ItemClickListener listener;
public MetaViewHolder(View v, ItemClickListener listener) {
super(v);
nivel = (TextView) v.findViewById(R.id.nivel);
estado = (TextView) v.findViewById(R.id.estado);
colegio = (TextView) v.findViewById(R.id.colegio);
especialidad = (TextView) v.findViewById(R.id.especialidad);
codigo = (TextView) v.findViewById(R.id.codigo);
this.listener = listener;
v.setOnClickListener(this);
}
@Override
public void onClick(View v) {
listener.onItemClick(v, getAdapterPosition());
}
}
}
interface ItemClickListener {
void onItemClick(View view, int position);
}
公共类元适配器扩展了RecyclerView.Adapter
实现ItemClickListener{
/**
*达托斯森林代表的对象列表{@link Meta}
*消炎
*/
私人清单项目;
/*
Conxto donde Acta el回收站视图
*/
私人语境;
公共元适配器(列表项、上下文){
this.context=上下文;
这个项目=项目;
}
@凌驾
public int getItemCount(){
返回items.size();
}
@凌驾
public MetaViewHolder onCreateViewHolder(视图组视图组,int i){
视图v=LayoutInflater.from(viewGroup.getContext())
.充气(R.layout.item_列表,视图组,false);
返回新的MetaViewHolder(v,此);
}
@凌驾
BindViewHolder上的公共无效(MetaViewHolder viewHolder,int i){
viewHolder.nivel.setText(items.get(i.getNivel());
viewHolder.estado.setText(items.get(i.getEstado());
viewHolder.colegio.setText(items.get(i.getIe());
viewHolder.specialidad.setText(items.get(i.getspecialidad());
viewHolder.codigo.setText(items.get(i.getCodigoPlaza());
}
/**
*Sobrecritura del método de la interfaz{@link itemclicklister}
*
*@param查看项目实际值
*@param position posición del项目实际值
*/
@凌驾
公共虚线单击(视图,int位置){
DetailActivity.launch(
(活动)上下文,items.get(position.getPlazaID());
}
公共静态类MetaViewHolder扩展了RecyclerView.ViewHolder
实现View.OnClickListener{
//联合国项目的尊重
公共文本视图nivel;
公共文本视图estado;
公共文本视图colegio;
公共文本视图;
公共文本视图codigo;
公共项ClickListener侦听器;
公共元视图持有者(视图v,项ClickListener侦听器){
超级(五);
nivel=(TextView)v.findviewbyd(R.id.nivel);
estado=(TextView)v.findViewById(R.id.estado);
colegio=(TextView)v.findviewbyd(R.id.colegio);
specialidad=(TextView)v.findViewById(R.id.specialidad);
codigo=(TextView)v.findviewbyd(R.id.codigo);
this.listener=listener;
v、 setOnClickListener(此);
}
@凌驾
公共void onClick(视图v){
onItemClick(v,getAdapterPosition());
}
}
}
接口项ClickListener{
void onItemClick(视图,int位置);
}
当前在我的应用程序中,如下所示:
然后需要为每个状态应用一个字符串,例如
public String getStateAsString(int state) {
switch (state) {
case 0:
return "VACANTE";
case 1:
return "OCCUPIED";
case 2:
return "RESERVED";
default:
return "STATE NOT DEFINED";
}
}
并调用该方法,而不是直接将状态分配为int
,以查看文本:
/*
* Instead of
* viewHolder.codigo.setText(items.get(i).getCodigoPlaza());
* you do the following
*/
int stateAsInt = items.get(i).getCodigoPlaza();
String stateAsString = getStateAsString(stateAsInt);
viewHolder.estado.setText(state);
然后需要为每个状态应用一个字符串,例如
public String getStateAsString(int state) {
switch (state) {
case 0:
return "VACANTE";
case 1:
return "OCCUPIED";
case 2:
return "RESERVED";
default:
return "STATE NOT DEFINED";
}
}
并调用该方法,而不是直接将状态分配为int
,以查看文本:
/*
* Instead of
* viewHolder.codigo.setText(items.get(i).getCodigoPlaza());
* you do the following
*/
int stateAsInt = items.get(i).getCodigoPlaza();
String stateAsString = getStateAsString(stateAsInt);
viewHolder.estado.setText(state);
您只是想将状态显示为
字符串(如“VACANTE”而不是“0”)还是想添加一个GUI元素来切换每个列表项的状态?只是想将状态显示为字符串(如“VACANTE”而不是“0”)您只是想将状态显示为字符串(如“VACANTE”而不是“0”)或者您想添加一个GUI元素来切换每个列表项的状态吗?只需替换为字符串(如“VACANTE”而不是“0”)