【发布时间】:2018-03-18 12:20:49
【问题描述】:
我从 JSON 填充列表视图,我需要使用自定义适配器滚动到特定项目。我没有职位,所以我不能使用这个post中提到的程序。
在这个结果 JSON 中,有一个字段 ID,所以我想滚动到具有相应 ID 的项目。
这是我用于 LoadFields 的代码(如果有帮助的话):
private void LoadData(String outputJSON) {
try {
calenList.clear();
ParseJson(outputJSON);
String[] ids = calId.toArray(new String[calId.size()]);
String[] date = calData.toArray(new String[calData.size()]);
String[] ore = calOra.toArray(new String[calOra.size()]);
String[] isNexts = calIsNext.toArray(new String[calIsNext.size()]);
for (int i = 0; i < calId.size(); i++) {
Calendario calendario = new Calendario();
calendario.setId(ids[i]);
calendario.setData(date[i]);
calendario.setOra(ore[i]);
calendario.setIsNext(isNexts[i]);
if (isNexts[i].equals("1")) {
calendario.setType(1);
} else
calendario.setType(0);
calenList.add(calendario);
adapter.updateData(calenList);
}
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int position, long l) {
shareResult(position);
}
});
} catch (JSONException e) {
e.printStackTrace();
Log.d(TAG, e.toString());
Log.d(TAG, e.getMessage());
}
}
这是我的适配器类:
public class CalendarioAdapter extends BaseAdapter {
private ArrayList<Calendario> listData;
private LayoutInflater layoutInflater;
public CalendarioAdapter(Context context, ArrayList listData) {
this.listData = listData;
layoutInflater = LayoutInflater.from(context);
}
@Override
public int getCount() {
return listData.size();
}
@Override
public Object getItem(int position) {
return listData.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public int getViewTypeCount() {
return 2;
}
@Override
public int getItemViewType(int position) {
return listData.get(position).getType();
}
@Override
public View getView(int position, View convertView, final ViewGroup parent) {
ViewHolder holder;
int type = getItemViewType(position);
if (convertView == null) {
if (type == 0)
convertView = layoutInflater.inflate(R.layout.calendario_row_layout, null);
else
convertView = layoutInflater.inflate(R.layout.calendario_row_layout_next, null);
holder = new ViewHolder();
holder.edData = (TextView) convertView.findViewById(R.id.edData);
holder.edOra = (TextView) convertView.findViewById(R.id.edOra);
holder.edSqCasa = (TextView) convertView.findViewById(R.id.edSqCasa);
holder.edSqTras = (TextView) convertView.findViewById(R.id.edSqTrasf);
holder.edRisult = (TextView) convertView.findViewById(R.id.edRisultato);
holder.imLogoCasa = (ImageView) convertView.findViewById(R.id.imLogoCasa);
holder.imLogoTras = (ImageView) convertView.findViewById(R.id.imLogoTras);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
Calendario calendario = (Calendario) listData.get(position);
holder.edData.setText(calendario.getData());
holder.edOra.setText(calendario.getOra());
holder.edSqCasa.setText(calendario.getSqCasa());
holder.edSqTras.setText(calendario.getSqTras());
holder.edRisult.setText(calendario.getPuntiCasa() + " - " + calendario.getPuntiTras());
if (holder.imLogoCasa != null) Ion.with(holder.imLogoCasa).load(calendario.getLogoCasa());
if (holder.imLogoTras != null) Ion.with(holder.imLogoTras).load(calendario.getLogoTras());
return convertView;
}
static class ViewHolder {
TextView edData;
TextView edOra;
TextView edSqCasa;
TextView edSqTras;
TextView edRisult;
ImageView imLogoCasa;
ImageView imLogoTras;
}
public void updateData(ArrayList<Calendario> updatedData) {
listData = updatedData;
this.notifyDataSetChanged();
}
}
【问题讨论】:
-
显示你的适配器类
-
我已将其添加到主帖中
标签: android listview android-studio listitem