0

ListView があり、リストには View Component が RelativeLayout に追加されたレイアウトが含まれています。

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >

<TextView 
    android:id="@+id/no"
    android:layout_width="40dp" 
    android:layout_height="40dp"
    android:layout_marginTop="5dp"
    android:layout_marginBottom="5dp"
    android:layout_marginLeft="10dp"
    android:layout_marginRight="5dp"
    android:gravity="center"
    />

<View
    android:id="@+id/line"
    android:layout_width="0.3dip"
    android:layout_height="wrap_content"
    android:layout_toRightOf="@+id/no"
    android:background="#FFdddddd" />

<TextView 
    android:id="@+id/name"
    android:textColor="#150517"
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content"
    android:layout_toRightOf="@+id/line"
    android:layout_marginTop="15dp"
    android:layout_marginLeft="20dp"
    android:layout_marginRight="10dp"
    android:layout_gravity="right"
    android:layout_alignParentRight="true"
    android:gravity="right"
    android:textSize="38sp"  />
</RelativeLayout>

MyCursorAdapter.java のコード:

  public class MyCursorAdapter extends SimpleCursorAdapter{

  public MyCursorAdapter(Context context, int layout, Cursor c, String[] from, int[] to, int flags) {
      super(context, layout, c, from, to, flags);
  }

  @Override 
  public View getView(int position, View convertView, ViewGroup parent) {
      View view = convertView;
      if(position % 2 == 0){
          view.setBackgroundColor(Color.rgb(243, 234, 214));
      }else{
          view.setBackgroundColor(Color.rgb(253, 247, 230));
      }
      ((TextView)view.findViewById(R.id.name)).setTypeface(Typeface.createFromAsset(view.getContext().getAssets(), "fonts/nytype.ttf"));
      return view;  
  }
 }  

アプリの実行を開始したとき。エラーメッセージがあります:

E/AndroidRuntime(19583): 致命的な例外: メイン

E/AndroidRuntime(19583): java.lang.IllegalStateException: android.view.View は、この SimpleCursorAdapter でバインドできるビューではありません

E/AndroidRuntime(19583): android.support.v4.widget.SimpleCursorAdapter.bindView(SimpleCursorAdapter.java:145) で

この問題を解決するにはどうすればよいですか?

4

1 に答える 1

1

それはあなたがこれをしているからです

View view = super.getView(position, convertView, parent);

あなたはそれをしたくない、あなたがする必要があるのはに設定viewするだけですconvertView

View view = convertView;

ビューがnullかどうかを確認し、そうであればここで必要なビューを膨らませます

if(view == null){
    view = getLayoutInflater().inflate(r.layout.name,null);
} 

ここに私がそれを行う方法の例があります

@Override
public View getView(int position, View convertView, ViewGroup parent){
    View v = convertView;
    if(v == null){
        convertView = View.inflate(context,R.layout.sin_preplan_row,null);
    }

    bindView(position, convertView);
    return convertView;
}

private void bindView(int position, View view){
    Map<String,Object> data = list.get(position);

    TextView name = (TextView)view.findViewById(R.id.name_text);
    TextView address = (TextView)view.findViewById(R.id.address_text);
    TextView notes = (TextView)view.findViewById(R.id.notes_text);
    TextView distance = (TextView)view.findViewById(R.id.distance_text);

    name.setText((String)data.get("name"));
    address.setText((String)data.get("address"));
    notes.setText((String)data.get(notes));
    distance.setText(String.valueOf((Float)data.get("distance")));

}

編集:

xmlをこれに変更します

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >

<TextView 
android:id="@+id/no"
android:layout_width="40dp" 
android:layout_height="40dp"
android:layout_marginTop="5dp"
android:layout_marginBottom="5dp"
android:layout_marginLeft="10dp"
android:layout_marginRight="5dp"
android:gravity="center"
/>

<FrameLayout
android:id="@+id/line"
android:layout_width="0.3dip"
android:layout_height="wrap_content"
android:layout_toRightOf="@+id/no"
android:background="#FFdddddd" />

<TextView 
android:id="@+id/name"
android:textColor="#150517"
android:layout_width="wrap_content" 
android:layout_height="wrap_content"
android:layout_toRightOf="@+id/line"
android:layout_marginTop="15dp"
android:layout_marginLeft="20dp"
android:layout_marginRight="10dp"
android:layout_gravity="right"
android:layout_alignParentRight="true"
android:gravity="right"
android:textSize="38sp"  />
</RelativeLayout>
于 2013-05-21T21:04:00.403 に答える