0

リストビューにJSON配列から取得したデータを入力しています。取得したメタデータは、リストビューをスクロールすると複製されます。

        public View getView(int pos, View convertView, ViewGroup parent) {
        View tv;
        TextView t;


        if (convertView == null)
            tv = m_inflater.inflate (R.layout.item, parent, false);
          else
            tv = convertView;

        try {
            t = (TextView) tv.findViewById(R.id.text);
            JSONObject obj = _results.getJSONObject(pos);

            t.setText (obj.getString("title").replaceAll("\\<.*?\\>", ""));

            t = (TextView) tv.findViewById(R.id.created_at);

            JSONObject meta = obj.getJSONObject("meta");

            t.setText (t.getText() + "\n"+ "When:" + "\t"+meta.getString("startDate")+"\n"+"Location:" +"\t" +meta.getString("location")+"\n" +"More Info:"+"\t" +meta.getString("eventURL")+"\n");




        } catch (JSONException e) {

            Log.e("alatta", e.getMessage());
        }
        return tv;
      }
4

1 に答える 1

2

それ以外の

t.setText (t.getText() + "\n"+ "When:" + "\t"+meta.getString( ...

これを試して:

t.setText("When:" + "\t"+meta.getString( ...)

これは、リスト ビューがリスト アイテム オブジェクト ( View convertView) を再利用するためです。スクロールすると、既に使用されている が取得されtv、そのビューにはすでにいくつかの値が入力されています。

于 2012-06-27T21:58:48.783 に答える