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 に答える