2012-03-12 14 views
0

私は、次のアダプタを作成しました:Android ArrayAdapterは返されませんか?

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content"> 
    <TextView android:text="TextView" 
    android:id="@+id/textviewtipid" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    > 
    </TextView> 
    <TextView android:text="TextView" 
    android:id="@+id/textviewtiprepresentation" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content"> 
    </TextView> 
    <TextView android:text="TextView" 
    android:id="@+id/textviewtipresult" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content"> 
    </TextView> 
    <TextView android:text="TextView" 
    android:id="@+id/textviewtipplayed" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content"> 
    </TextView> 

</LinearLayout> 

GetViewメソッドは、すべてのtextviewsがその値を変更する...と呼ばれ...そして最後の変更の後に(どんなに:

package org.virtualbet.gui.util; 

import java.util.List; 


import org.virtualbet.R; 
import org.virtualbet.model.Tip; 


import android.content.Context; 
import android.util.Log; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.ArrayAdapter; 
import android.widget.TextView; 

public class TipListAdapter extends ArrayAdapter<Tip> { 
    private final Context context; 
    private List<Tip> values; 

    public TipListAdapter(Context context, int textViewResourceId, List<Tip> objects) { 
     super(context, textViewResourceId, objects); 
     //super(context, R.layout.rowlayout, values); 
     this.context = context; 
     this.values = objects; 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     try { 
      View v = convertView; 
      if (v == null) { 
       LayoutInflater inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
       v = inflater.inflate(R.layout.row_tip, null); 
      } 
      Tip tip = values.get(position); 
      if (tip!=null) { 
       ((TextView)v.findViewById(R.id.textviewtipid)).setText((CharSequence)tip.getTipNumber()); 
       ((TextView)v.findViewById(R.id.textviewtiprepresentation)).setText((CharSequence)tip.getTipRepresentation()); 
       ((TextView)v.findViewById(R.id.textviewtipresult)).setText((CharSequence)tip.getDetails()); 
       ((TextView)v.findViewById(R.id.textviewtipid)).setText((CharSequence)tip.getTipOptions()); 
       return v; 
      } 
      return null; 
     } catch (Throwable t) { 
      Log.e("A", t.toString()); 
      return null; 
     } 
    } 


} 

リストビューのXMLは次のようになりますどちらがそれですか)プログラムは、キャッチ部分に行く???

なぜですか?誰かがこのような問題を抱えていたか?

package org.virtualbet.gui; 

import java.util.ArrayList; 
import java.util.List; 

import org.virtualbet.R; 
import org.virtualbet.bll.TipBLL; 
import org.virtualbet.gui.util.TipListAdapter; 
import org.virtualbet.model.Ticket; 
import org.virtualbet.model.Tip; 

import android.app.Activity; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.ListView; 

public class FollowTicket extends Activity { 

    private static final String TAG = "FollowTicket"; 

    private TipBLL bll; 
    private TipListAdapter tipListAdapter; 
    private ListView lv; 
    private List<Tip> tips; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.follow_ticket); 

     bll = new TipBLL(); 
     tips = new ArrayList<Tip>(); 
     tipListAdapter = new TipListAdapter(this.getApplicationContext(), R.layout.row_tip, tips); 
     lv = ((ListView)findViewById(R.id.listViewTips)); 
     lv.setAdapter(tipListAdapter); 
     ((Button)findViewById(R.id.buttonSearchForTicket)).setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       searchTicket(((EditText)findViewById(R.id.editTextSerialNumber)).getText().toString()); 
      } 
     }); 
    } 

    private void searchTicket (String serialNumber) { 
     Log.i(TAG, "Searching ticket " + serialNumber); 
     Ticket ticket = bll.getTicket(serialNumber); 
     if (ticket != null){ 
      Log.i(TAG, "Found it!"); 
      tips.clear(); 
      for (Tip tip : ticket.getTips()) { 
       Log.i(TAG, "Adding tip " + tip.getTipNumber()); 
       tips.add(tip); 
      } 
      tipListAdapter.notifyDataSetChanged(); 
     } else { 
      Log.i(TAG, "Didn't find it!"); 
     } 
    } 

} 
+0

logcatに「tip tip#」行がありますか? –

+0

はいデバッグしようとすると、notifyDataSetChanged()が呼び出されます。:/ –

+0

そして、最も興味深いのは、Throwableが空です(例外もキャッチするようにしましたが、空でした)。 ... –

答えて

1

はそれを修正した理由かもしれません!本当に愚かな間違い。私が移入するためのリストを持っていた私のレイアウトでは、私は

<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="wrap_content" 
    android:layout_height="fill_parent" <-------------ERROR!!!!!! 
    android:background="#880000" 
    android:orientation="horizontal" > 

.............いくつかの要素

</LinearLayout> 
<ListView 
    android:id="@android:id/list" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" > 
</ListView> 

どこエラーが発生しました!!!これはwrap_contentであるべきだと指摘しています。このレイアウトはListViewをスコープの外に押し出し、ListViewがあることを知らない(実行時に、コーディングコンパイラは不平を言っていません)......本当に愚か!!!

助けてくれてありがとうとにかく...

0

あなたがもう一度この部分を見てしたいことがある:私はプロジェクト(日食)問題....

ああ、私はモデルを変更しています場所ですが、だとどこかで読みましたあなたのコードで:

 if (tip!=null) { 
      ((TextView)v.findViewById(R.id.textviewtipid)).setText((CharSequence)tip.getTipNumber()); 
      ((TextView)v.findViewById(R.id.textviewtiprepresentation)).setText((CharSequence)tip.getTipRepresentation()); 
      ((TextView)v.findViewById(R.id.textviewtipresult)).setText((CharSequence)tip.getDetails()); 
      ((TextView)v.findViewById(R.id.textviewtipid)).setText((CharSequence)tip.getTipOptions()); 
      return v; 
     } 

私はR.id.textviewtipidを2回試していると思います。

 if (tip!=null) { 
      ((TextView)v.findViewById(R.id.textviewtipid)).setText((CharSequence)tip.getTipNumber()); 
      ((TextView)v.findViewById(R.id.textviewtiprepresentation)).setText((CharSequence)tip.getTipRepresentation()); 
      ((TextView)v.findViewById(R.id.textviewtipresult)).setText((CharSequence)tip.getDetails()); 
      ((TextView)v.findViewById(R.id.textviewipplayed)).setText((CharSequence)tip.getTipOptions()); 
      return v; 
     } 

これは

+0

これを通知してくれてありがとうございますが、いいえ、それは助けになりませんでした:/ ...私は本当に私が間違っているか分からない:( –

関連する問題