2

これが私がやろうとしていることです:-SharedPreferencesオブジェクト(User#、Name)からキーと値のペアのマップを取得します-私ができるようにそれらのキーと値のペアをArrayListに書き込みます-それらを使用してListViewにデータを入力します次のように、キーと値の両方を含む各行:

  1. ユーザー1-ジョーR。

  2. ユーザー2-フランクB。


更新:SimpleAdapterクラスをよく見て、より賢明で知識豊富な人々と話をした後、私は以前よりもずっと近くにいます...しかし、まだずっとそこにいるわけではありません。

これが私が今持っているものです:

public class LogHistory extends ListActivity {

static final ArrayList<HashMap<String, String>> list = new ArrayList<HashMap<String, String>>();
private static final String KEY = null;
private static final String VALUE = null;

public void onCreate(Bundle b) {
    super.onCreate(b);
    setContentView(R.layout.log_history);

    SharedPreferences logPrefs = getSharedPreferences(LoginField.PREFSNAME, 0);
    Map<String, ?> logMap = logPrefs.getAll();

    for (Map.Entry<String, ?> e : logMap.entrySet()) {
        HashMap<String, String> row = new HashMap<String, String>();
        String mKey = e.getKey();
        String mValue = (String) e.getValue();
        row.put(KEY, mKey);
        row.put(VALUE, mValue);
        list.add(row);

        // FOR DEBUGGING PURPOSES
        makeToast(mKey);
        makeToast(mValue);
    }

    SimpleAdapter adapter = new SimpleAdapter(
        this,
            list,
            R.layout.list_item,
            new String[] { KEY, VALUE },
            new int[] {R.id.item1, R.id.item2}
    );

    setListAdapter(adapter); 

この種の作業は機能しますが、途中です...結果として得られるのは、両方の列の値のリストです...

ただし、makeToast関数はKEYとVALUEの両方に適切な値を返すため、問題はSimpleAdapterメソッドにある必要があります。

援助は素晴らしいでしょう-宿題は今夜の予定です!:-0

4

1 に答える 1

1

「カスタムリストビュー」、「リストビューカスタムアダプタ」などを検索する必要があります。「2行のリストビューアイテムレイアウト」..。

この例を参照してください。Googleには他にもあります。

ArrayList<Hashmap<String,String>>基本的に、データコンテナであるを作成できます。これに値を追加して、HashMap<String, String>必要な数のオブジェクトを作成し、を使用しますlist.add(yourHashMap)。ここで、listはArrayListです。

最後に、それをにフィードしますSimpleAdapter(他の方法もありますが、これはそれほど問題なく機能します)。

ドキュメントをチェックして、それぞれが正確にどのように機能するかを確認してください。


インデックスキーを無効にしています。それらの最後の文字列に名前を付けます。

この種の動作は-しかし途中でしか...結果として得られるのは両方の列の値のリストです...ただし、makeToast関数はKEYとVALUEの両方に適切な値を返します-したがって、問題はSimpleAdapterメソッドに含まれていますか?

私が言ったように、いいえ。これを行うとき:

row.put(KEY, mKey);
row.put(VALUE, mValue);

KEYとの間に意味のある違いはありませんVALUE。どちらもnullだからです。これは、すべてのものを同じ列に入れるようなものです。

自分で作成したトーストテストでは、列ではなく値の正確さのみがテストされるため、推論の誤りは次のとおりです。

makeToast(mKey);
makeToast(mValue);

その中で、値だけをテストします。;)あなたは、列が正しいと仮定し、間違いは値にのみある可能性があり、それは正反対です。

コンピュータを扱う最初のルール:コンピュータは決してLOLを想定しません。;-)

于 2011-11-15T20:46:34.550 に答える