2

ListView があり、オブジェクトの ArrayList を入力する必要があります。

ArrayList<BrowserClass> playListArr = new ArrayList<BrowserClass>();

ここに BrowserClass があります:

public class BrowserClass{
    String musicName = null;
    int musicId = 0;

    BrowserClass(String Name, int Id)
    {
        musicName = Name;
        musicId = Id;
    }

    public String getName()
    {
        return musicName;
    }

    public int getId()
    {
        return musicId;
    }

}

ListView にデータを入力するために、次のコードを使用しています。

ArrayAdapter<BrowserClass> plAdapter = new ArrayAdapter<BrowserClass>(this, android.R.layout.simple_list_item_1, playListArr);
myListView.setAdapter(plAdapter);

しかし、listView にはガベージ値が表示されています。名前のみを表示する必要があります(ブラウザクラスのgetname())。Custom Listview、BaseAdapter を使用してこれを実現できます。しかし、BaseAdapter を使用せずに実装したいと考えています。

4

4 に答える 4

3

このような :

製品.java

public class Product {
private int id;
private String name;
private double price;

public Product(){
    super();
}

public Product(int id, String name, double price) {
    super();
    this.id = id;
    this.name = name;
    this.price = price;
}

@Override
public String toString() {
    return this.id + ". " + this.name + " [$" + this.price + "]";
}
}

主な活動

public class MainActivity extends Activity {

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

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

    Product[] items = { 
        new Product(1, "Milk", 21.50), 
        new Product(2, "Butter", 15.99), 
        new Product(3, "Yogurt", 14.90), 
        new Product(4, "Toothpaste", 7.99), 
        new Product(5, "Ice Cream", 10.00), 
    };

    ArrayAdapter<Product> adapter = new ArrayAdapter<Product>(this,
                android.R.layout.simple_list_item_1, items);

    listView1.setAdapter(adapter);
}
}
于 2012-09-05T07:08:11.567 に答える
0

ArrayListアダプタ コンストラクタには使用できません。まず、ArrayList 項目を配列にコピーしてから、この新しく作成された配列を Adapter コンストラクターに渡す必要があります。

ArrayList 項目を配列にコピーする方法

ArrayList.toArray(Array);

次に、アダプターコンストラクターに Array を使用しました。

私が説明したいことを理解していただければ幸いです。

于 2012-10-04T10:54:02.173 に答える
0

アダプタをそのまま動作させたい場合は、BrowserClass クラスの toString() メソッドをオーバーライドする必要があります。アダプタはこれを使用してリスト ビューを埋め、デフォルトの toString() メソッドはオブジェクトのメモリ ロケーションを使用します。

toString()メソッドは、すべての Java オブジェクトに存在する汎用メソッドです。ArrayAdapter のデフォルトの動作は、オブジェクトを 1 行のテキストで表示することです。オブジェクトをテキストに変換する一般的な方法は、toString メソッドです。デフォルトでは、これは "MyClass@0x1D2EF5512" (メモリ内のオブジェクトのクラス名と場所) のようなものを返します。

toString() メソッドをオーバーライドするときは、オブジェクトを文字列として表示する方法を Java に伝えます。

于 2012-09-05T07:09:10.067 に答える