1

カスタム行を含むリストビューを作成したいと思います。ListActivity行項目ごとに拡張するクラスと XML を作成しました。また、ダミー データを生成するメソッドも追加しました。しかし、これは私が立ち往生しているところです。メインクラスからこれを呼び出して、リストビューを作成するにはどうすればよいmain.xmlですか?

CustomListView.java

public class CustomListView extends ListActivity  {

private ArrayList<HashMap<String,String>> list;

public CustomListView(){

    list =  new ArrayList<HashMap<String,String>>();

    SimpleAdapter adapter = new SimpleAdapter(
            this,
            list,
            R.layout.custom_list_item,
            new String[] {"pen","price","color"},
            new int[] {R.id.text1,R.id.text2, R.id.text3});

    populateList();

    setListAdapter(adapter);

}

private void populateList() {

    HashMap<String,String> temp = new HashMap<String,String>();
    temp.put("pen","MONT Blanc");
    temp.put("price", "200.00$");
    temp.put("color", "Silver, Grey, Black");
    list.add(temp);
    HashMap<String,String> temp1 = new HashMap<String,String>();
    temp1.put("pen","Gucci");
    temp1.put("price", "300.00$");
    temp1.put("color", "Gold, Red");
    list.add(temp1);
    HashMap<String,String> temp2 = new HashMap<String,String>();
    temp2.put("pen","Parker");
    temp2.put("price", "400.00$");
    temp2.put("color", "Gold, Blue");
    list.add(temp2);
    HashMap<String,String> temp3 = new HashMap<String,String>();
    temp3.put("pen","Sailor");
    temp3.put("price", "500.00$");
    temp3.put("color", "Silver");
    list.add(temp3);
    HashMap<String,String> temp4 = new HashMap<String,String>();
    temp4.put("pen","Porsche Design");
    temp4.put("price", "600.00$");
    temp4.put("color", "Silver, Grey, Red");
    list.add(temp4);

}

}

custom_list_item.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >

<TextView android:id="@+id/text1" 
android:textSize="16sp" 
android:textStyle="bold" 
android:textColor="#FFFF00" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent"/>

<TextView android:id="@+id/text2"
android:textSize="12sp" 
android:textStyle="bold" 
android:layout_width="wrap_content" 
android:layout_height="fill_parent"/>

<TextView android:id="@+id/text3" 
android:typeface="sans"
android:textSize="14sp"
android:textStyle="italic"
android:layout_width="wrap_content" 
android:layout_height="wrap_content"/>

4

2 に答える 2

2

50% 完了しました。いくつかの手順が残っています

1 のコンストラクターを削除しCustomListViewます。これは必要ありません。

onCreate2メソッドをオーバーライドする

public void onCreate(Bundle icicle) {
    super.onCreate(icicle);
    list = new ArrayList<HashMap<String, String>>();
    populateList();
    SimpleAdapter adapter = new SimpleAdapter(this, list,
            R.layout.custom_list_item, new String[] { "pen", "price",
                    "color" }, new int[] { R.id.text1, R.id.text2,
                    R.id.text3 });
    setListAdapter(adapter);
}

manifest3 次のようなファイルにアクティビティを追加します

<activity
        android:name=".CustomListView"
        />

4 メイン アクティビティから開始する方法。ボタンのクリックでこれが必要ですか? その後、使用できますIntents

startActivity(new Intent(yourMainActivity.this,CustomListView.class))
于 2012-12-02T12:24:00.043 に答える
1

カスタム リスト セルを作成することは、実際にはカスタム アダプタを作成することを意味します。

リストのデータ ソースの種類を選択し、そのためのアダプターを作成して、必要に応じて情報を表示します。

getView通常、メソッドを実装して、通常のビューの代わりにカスタム ビューをインフレートする必要があります。

カスタム アダプタのコード サンプルを次に示します。

public class LazyAdapter extends BaseAdapter {

    private Activity activity;
    private String[] data;
    private static LayoutInflater inflater=null;
    public ImageLoader imageLoader; 

    public LazyAdapter(Activity a, String[] d) {
        activity = a;
        data=d;
        inflater = (LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        imageLoader=new ImageLoader(activity.getApplicationContext());
    }

    public int getCount() {
        return data.length;
    }

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

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

    public View getView(int position, View convertView, ViewGroup parent) {
        View vi=convertView;
        if(convertView==null)
            vi = inflater.inflate(R.layout.item, null);

        TextView text=(TextView)vi.findViewById(R.id.text);;
        ImageView image=(ImageView)vi.findViewById(R.id.image);
        text.setText("item "+position);
        imageLoader.DisplayImage(data[position], image);
        return vi;
    }
}

listViewとAdapterに関するvogallaのチュートリアルを読んでみてください

于 2012-12-02T12:16:16.447 に答える