我正在用户点击列表视图中的项目时,它会显示项目内部的公交时间。Listview显示重复的项目点击时
我不确定哪里出了问题。当它点击时,它会在列表视图中显示一个项目。但是当我滚动列表视图时,它将显示与前一项目相同的总线时间。我从stackoverflow读了几个解决方案,但是我没有解决这个问题。
我希望能得到一些建议来解决这个问题。
The text will appear when being clicked
public class Adapter extends ArrayAdapter
{
ArrayList<BusRoute>busList ;
private int resource;
private LayoutInflater inflater;
public Adapter(Context context, int resource, ArrayList objects) {
super(context, resource, objects);
busList=objects;
this.resource=resource;
inflater= (LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE);
}
class ViewHolder {
TextView buscode;
TextView businfo;
TextView bookmark;
TextView firstBusTime;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
final ViewHolder holder;
if(convertView == null)
{
convertView=inflater.inflate(R.layout.bus_route_activity_listview,null);
holder = new ViewHolder();
holder.buscode = (TextView) convertView.findViewById(R.id.buscode);
holder.businfo = (TextView) convertView.findViewById(R.id.businfo);
holder.bookmark = (TextView)convertView.findViewById(R.id.bookmark);
holder.firstBusTime = (TextView)convertView.findViewById(R.id.firstBusTime);
}
else
{
holder = (ViewHolder) convertView.getTag();
}
final BusRoute map = busList.get(position);
holder.buscode.setText(map.getBusStopCode());
holder.businfo.setText(map.getRoad() + "\n" + map.getDescription());
//when user select on the particular item in the listview
convertView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
holder.firstBusTime.setText("Yo");
}
});
return convertView;
}
}
BusRoute类
public class BusRoute {
private String BusStopCode;
private String Road;
private String Description;
public String getBusStopCode() {
return BusStopCode;
}
public void setBusStopCode(String busStopCode) {
BusStopCode = busStopCode;
}
public String getRoad() {
return Road;
}
public void setRoad(String road) {
Road = road;
}
public String getDescription() {
return Description;
}
public void setDescription(String description) {
Description = description;
}
}
适配器正被调用
public class BusRouteTask1 extends AsyncTask<String, String, ArrayList<BusRoute>> {
@Override
protected ArrayList<BusRoute> doInBackground(String... params) {
}
@Override
protected void onPostExecute(ArrayList<BusRoute> result) {
super.onPostExecute(result);
Adapter a = new Adapter(getApplicationContext(), R.layout.activity_bus_route, result);
lv.setAdapter(a);
请发布您的BusRoute类。 –
'最终BusRoute map = busList.get(position); holder.buscode.setText(map.getBusStopCode()); ......'在你的'if(convertView == null)'部分添加这个。 –