ArrayList无法在列表视图中显示 - android

时间:2013-06-02 00:55:56

标签: android listview android-listview

我正在开发一个应用程序来获取附近的加油站并将它们显示在一个列表中,我的问题是在列表中显示它我经历了很多教程但是无法找出问题哪个没有列表出现数据我是确定这部分中的问题但不知道如何解决它,并确保此问题中的问题试图放置进度对话框并在此部分代码之前直接将其解除。

这是使用我从onPostexecute调用的适配器显示数组列表的方法

protected void showItems(ArrayList<HashMap<String,String>> placestoList2){

            ListAdapter adapter101 = new SimpleAdapter(MainActivity.this, placestoList2,
                    R.layout.list_item,
                    new String[] { KEY_NAME, KEY_VICINITY}, new int[] {
                            R.id.name, R.id.vicinty });
lv.setAdapter(adapter101);     
        }

这个从列表中获取数据的方法我得到的地方

   protected ArrayList<HashMap<String,String>> getLocations(List<HashMap<String,String>> list){

                for(int i=0;i<list.size();i++){

                    HashMap<String, String> mapM = list.get(i);
                    HashMap<String, String> mapM2 = new HashMap<String, String>();


                    String name = mapM.get("place_name");
                    mapM2.put(KEY_NAME, name);

                    String vicinity = mapM.get("vicinity");
                    mapM2.put(vicinity, vicinity);
                    placesListItems.add(mapM2);
                    }
                return placesListItems;
}

和布局中的列表视图

<ListView
        android:id="@+id/listView"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"/>

其他布局

<TextView android:id="@+id/name"
    android:visibility="gone"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"/>

<TextView android:id="@+id/vicinty"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:padding="10dip"
    android:textStyle="bold"
    android:textSize="16sp"/>

1 个答案:

答案 0 :(得分:0)

这里需要的是自定义适配器。这是你需要做的。如果我没错,您的数据将存储在List&gt;中。根据您的要求改变。以下是您在活动或片段中所做的事情:

ListView listView;
listView=(ListView)findViewById(R.id.listView);

//Call this when you have data. If you are only updating think of something else
Adapterlist adapter=new Adapterlist(this,getData());
listView.setAdapter(adapter);

这是自定义适配器:

public class Adapterlist extends BaseAdapter {

private Context context;
private List<HashMap<String,String>> list;

public static final String PLACE="place_name";
public static final String VICINITY="vicinty";

public AdapterApplist(Context context, List<HashMap<String,String>> list) {
    this.context = context;
    this.list = list;
}

public int getCount() {
    return list.size();
}

public Object getItem(int position) {
    return position;
}

public long getItemId(int position) {
    return position;
}

public View getView(int position, View convertView, ViewGroup parent) {
    ViewHolder holder;

    if (convertView == null){
        LayoutInflater inflater = (LayoutInflater) context
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            view = inflater.inflate(R.layout.list_row, null);

        holder = new ViewHolder();
        holder.name = (TextView) view
                .findViewById(R.id.name);
        holder.vicinty = (TextView) view
                .findViewById(R.id.vicinty);

        convertView.setTag(holder);
    }else{
        holder=(ViewHolder)convertView.getTag();
    }

    setUI(holder,position);

    return view;
}

private void setUI(ViewHolder holder,int position){
    HashMap<String, String> map = list.get(position);

    holder.name.setText(map.get(PLACE));
    holder.vicinty.setText(map.get(VICINITY));
}

public static class ViewHolder {
    public TextView name;
    public TextView vicinty;
}

}

下次请做更多研究。这可以在互联网上找到。