0

私のアプリでは、アダプター (ArrayAdapter> を拡張する) にそのような list: を渡していますList<Map<String, String>>。このリストからの単一のレコードは次のようになります: これが{received=true, text=Some sort of text}私の getView メソッドです:

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    Map<String, String> singleRecord = new HashMap<String, String>();
    singleRecord = records.get(position);
    View rowView = convertView;
    if (rowView == null) {
        LayoutInflater layoutInflater = context.getLayoutInflater();
        rowView = layoutInflater.inflate(record_layout, null);
    }

    //To test get method I do:
    String to_put =  singleRecord.get(KEY_TEXT);
    Log.e("Adapter", to_put);
    ////

    TextView singleText = (TextView) rowView.findViewById(R.id.singleID);
    singleText.setText(singleRecord.get(KEY_TEXT));

    //viewHolder.singleText.setText(tekst);

    return super.getView(position, convertView, parent);
}

ご覧のとおり、TextView に、マップに含まれるキー: "KEY_TEXT"; の setText を設定します。get メソッドが正常に機能するかどうかをテストするために、Log に配置すると正しく表示されますが、テキストビューのテキストを LogCat に配置した同じテキスト (マップからのテキスト) に設定すると、キーの値が取得されません。 : "KEY_TEXT"、次のようなものを取得しています: つまり{received=true, text=Some sort of text}、文字列に変換された単なる 1 つのレコードです。なぜこれが起こっているのか誰にも分かりますか?

4

1 に答える 1

0

以下のコードを使用してください。

@Override
public View getView(int position, View convertView, ViewGroup parent) {
   Map<String, String> singleRecord = new HashMap<String, String>();
    View vi = convertView;
    singleRecord = records.get(position);
    vi = mLayoutInflater.inflate(R.layout.record_layout, null);

    TextView tv1 = (TextView) vi
            .findViewById(R.id.singleID);

    tv1.setText(singleRecord.get(KEY_TEXT));

    return vi;

}
于 2013-05-04T10:32:59.437 に答える