2016-05-15 1 views
0

私のアプリケーションでは、「slot_item_row」という名前のレイアウトを膨張させるカスタムArrayAdapterにArraylistを提供しています。すべてここでうまくいきますが、特定のレイアウトのTextviewにアクセスした後、エラーとアプリケーションクラッシュが発生し、textviewリソースにアクセスできないログが記録されます。 しかし、私はtextviewsのアクセス部分をコメントアウトすると、すべてがうまく表示されます。 ArrayAdapter:ArrayAdapter膨大なレイアウトからTextviewsにアクセスできない

public class SlotListAdapter extends ArrayAdapter<slots> { 
    Context context; 
    List<slots> sl; 

    public SlotListAdapter(Context context,int textViewResourceId ,List<slots> Slots) { 
     super(context, textViewResourceId, Slots); 
     this.context = context; 
     this.sl = Slots; 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     LayoutInflater vi = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     View view = vi.inflate(R.layout.slot_block, null); 

     slots slot = sl.get(position); 

     TextView tit = (TextView) view.findViewById(R.id.txt1s); 
     tit.setText(slot.name); 

     TextView num = (TextView) view.findViewById(R.id.txt2s); 
     num.setText(slot.slotNum); 

     TextView status = (TextView) view.findViewById(R.id.txt3s); 
     status.setText(slot.status); 
     return view; 
    } 
} 

slot_block.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:orientation="vertical" 
    android:padding="10dp" 
    android:paddingLeft="10dp" 
    android:paddingRight="10dp" > 


    <LinearLayout 
     android:orientation="horizontal" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_alignParentTop="true" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentStart="true" 
     android:weightSum="1"> 

     <ImageView 
      android:layout_width="100sp" 
      android:layout_height="100sp" 
      android:id="@+id/imageView2" 
      android:background="@drawable/parking" 
      android:layout_alignParentTop="true" 
      android:layout_alignParentLeft="true" 
      android:layout_alignParentStart="true" /> 

     <LinearLayout 
      android:orientation="vertical" 
      android:layout_width="wrap_content" 
      android:layout_height="match_parent" 
      android:layout_weight="0.45"> 

      <TextView 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:textAppearance="?android:attr/textAppearanceSmall" 
       android:text="Name" 
       android:id="@+id/textView9" /> 

      <TextView 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:textAppearance="?android:attr/textAppearanceSmall" 
       android:text="Slot" 
       android:id="@+id/textView21" /> 

      <TextView 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:textAppearance="?android:attr/textAppearanceSmall" 
       android:text="Status" 
       android:id="@+id/textView48" /> 

     </LinearLayout> 

     <LinearLayout 
      android:orientation="vertical" 
      android:layout_width="109dp" 
      android:layout_height="match_parent"> 


      <TextView 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:id="@+id/txt1s" /> 

      <TextView 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:id="@+id/txt2s" /> 

      <TextView 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:id="@+id/txt3s" /> 
     </LinearLayout> 

    </LinearLayout> 
</RelativeLayout> 

ListActivity:

public class ShowSlots extends ListActivity { 
    private List<slots> rts; 
    String username,parkingName,price,lat,lon,available; 
    int availableParkings; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 

     super.onCreate(savedInstanceState); 

     setContentView(R.layout.activity_slot); 
     Bundle extras = getIntent().getExtras(); 
     if (extras != null) { 

      username = extras.getString("USERNAME"); 
      parkingName = extras.getString("PARKINGNAME"); 
      price = extras.getString("PRICE"); 
      lat = extras.getString("LAT"); 
      lon = extras.getString("LON"); 

      available = extras.getString("AVAILABLE"); 
      availableParkings = Integer.parseInt(available); 
     } 
     rts= new ArrayList<slots>(); 
     for(int i=0;i<availableParkings;i++){ 
      rts.add(new slots(parkingName,i+1,"Available")); 
     } 
     refreshDisplay(); 
    } 
    private void refreshDisplay(){ 
     if(rts.size()==0){ 
      Toast.makeText(this, "No Reminders in Database", Toast.LENGTH_LONG).show(); 
     } 
     ArrayAdapter<slots> remAdpt = new SlotListAdapter(this,R.layout.slot_block,rts); 
     setListAdapter(remAdpt); 

    } 

} 

activity_slot.xml:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    tools:context="com.sol.irad.parkme.SlotActivity"> 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:textAppearance="?android:attr/textAppearanceSmall" 
     android:id="@+id/txtMessage" 
     android:text="Parking Slots" 
     android:textColor="#00318c" 
     android:layout_alignParentTop="true" 
     android:layout_centerHorizontal="true" /> 
    <ListView 
     android:id="@android:id/list" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_below="@+id/txtMessage" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentStart="true" /> 
</RelativeLayout> 
+0

クラッシュログを表示できますか? –

+0

スタジオを閉じていない場合は一度実行してください。スタジオを閉じて一度実行してください。リソースIDが取得されません... –

+0

これは動作しない場合、別のIDを持つ別の新しいXMLを作成して確認します。 。 –

答えて

1

slotNumstatusフィールドの種類は何ですか?彼らはあなたがこのようなsetTextを呼び出すことはできませんint値であれば:

TextView num = (TextView) view.findViewById(R.id.txtSlotSA); 
num.setText(slot.slotNum); 

TextView status = (TextView) view.findViewById(R.id.txtStatusSA); 
status.setText(slot.status); 

問題は、あなたがsetText方法でint値を使用する場合、あなたはリソースIDを渡しているです。そのIDは存在せず、ResourceNotFoundExceptionがスローされます。コードを変更する必要があります。

TextView num = (TextView) view.findViewById(R.id.txtSlotSA); 
num.setText(String.valueOf(slot.slotNum)); 

TextView status = (TextView) view.findViewById(R.id.txtStatusSA); 
status.setText(String.valueOf(slot.status)); 
+0

ありがとうございました。半日でそれと苦労していたが、あなたは私の日を救った。 – user2591221

+0

スロット番号はintです。 :) – user2591221

関連する問題