【发布时间】:2015-04-28 18:50:27
【问题描述】:
我的目的是在这样的列表中列出一个列表:
-alllist--------
----row---------
----row---------
-----(list)-----
-------textview
-------textview
---row---------
-----(list)----
.....
MainAdapter 类与其他元素一起工作正常,但PlaceAdapter 仅将第一个(或最后一个,我无法计算)项目添加到“嵌套”列表中。
有什么问题?
主适配器:
@Override
public View getView(int position, View convertView, ViewGroup parent) {
PlaceHolder placeHolder = null;
if (convertView == null) {
placeHolder = new PlaceHolder();
convertView = mInflater.inflate(R.layout.convers_place, null);
placeHolder.listView = (ListView) convertView.findViewById(R.id.listView);
convertView.setTag(placeHolder);
} else {
placeHolder = (PlaceHolder)convertView.getTag();
}
PlaceAdapter adapter = new PlaceAdapter(ctx);
placeHolder.listView.setAdapter(adapter);
String arr[] = conversion.message.split(Pattern.quote("!!")); // Not empty
adapter.add(new PlaceModel(arr[0]));
adapter.add(new PlaceModel(arr[1]));
}
PlaceAdapter:
public class PlaceAdapter extends BaseAdapter {
Context ctx;
private List<PlaceModel> places = new ArrayList<>();
private LayoutInflater mInflater;
public PlaceAdapter(Context ctx){
this.ctx = ctx;
mInflater = (LayoutInflater)this.ctx.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
public void add(PlaceModel object) {
this.places.add(object);
}
@Override
public int getCount() {
return this.places.size();
}
@Override
public PlaceModel getItem(int position) {
return this.places.get(position);
}
@Override
public long getItemId(int position) {
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
PlaceHolder_ placeHolder = null;
PlaceModel place = getItem(position);
if (convertView == null) {
placeHolder = new PlaceHolder_();
convertView = mInflater.inflate(R.layout.convers_place_row, null);
placeHolder.name= (TextView)convertView.findViewById(R.id.row_name);
placeHolder.address= (TextView)convertView.findViewById(R.id.row_address);
placeHolder.map= (Button)convertView.findViewById(R.id.row_map);
convertView.setTag(placeHolder);
}
else {
placeHolder = (PlaceHolder_)convertView.getTag();
}
placeHolder.name.setText(place.getName());
placeHolder.address.setText(place.getAddress());
return convertView;
}
public static class PlaceHolder_ {
public TextView name;
public TextView address;
public Button map;
}
}
notifyDataSetChanged() 不受影响。
【问题讨论】:
-
先生,您是在列表视图中添加列表视图吗?为什么不是可展开的列表视图?
-
嘿,是的,我正在这样做。我不会使用 ExpandableListView,因为我现在无法更改代码库,并且我已经在此列表中设置了 3 个视图,嵌套列表视图除外。
-
你在哪里打电话
notifyDataSetChanged()? -
我用
add(PlaceModel object)方法试了一下。
标签: android listview android-adapter baseadapter