1

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

这是使用我从 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"/>
4

1 回答 1

0

您在这里需要的是自定义适配器。这是您需要执行的操作。如果我没记错的话,您的数据存储在 List> 中。根据您的要求进行更改。以下是您在活动或片段中执行的操作:

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;
}

}

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

于 2013-06-02T02:25:46.150 回答