このチュートリアルhttp://android.amberfog.com/?p=296を読んでいます。さまざまな種類の行を持つ Listview を作成したいと思います。アダプターの作成方法は理解できましたが、xml レイアウトはどうでしょうか。したがって、次のような xml レイアウトを定義します。
<ListView/>
<TextView android:id="@+id/id1" />
<TextView android:id="@+id/id2" />
<ImageView android:id="@+id/id3" />
<TextView android:id="@+id/id4" />
ある行がレイアウトの一部の要素 (一部のテキストビューのみ) を使用し、別の行が他の要素を使用している可能性がある場合、(パフォーマンスのために) 問題になりますか? 私の方法がxmlを定義する正しい方法なのか、それとも行のタイプごとに異なるレイアウトを作成する必要があるのか わかりません。
前もって感謝します
編集:今、私はヌルポイントの例外を抱えています。
アダプターからの Java コード:
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder = null;
int type = getItemViewType(position);
if (convertView == null) {
holder = new ViewHolder();
convertView = mInflater.inflate(R.layout.listview_main, null);
holder.textView_title = (TextView)convertView.findViewById(R.id.listview1);
convertView.setTag(holder);
} else {
holder = (ViewHolder)convertView.getTag();
}
**holder.textView_title.setText("aaaa");** //NULL POINT EXCEPTION HERE
return convertView;
}
class ViewHolder {
public TextView textView_title;
}
xml 1:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/main_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:gravity="left"
android:layout_margin="0dp">
<!-- android:background="#0094ff" -->
<ListView
android:id="@id/android:list"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:fastScrollEnabled="true"
android:scrollbarStyle="insideInset"
android:textFilterEnabled="false"
android:divider="@null"
android:layout_margin="0dp"
android:paddingTop="0dp"
android:paddingBottom="0dp"
android:paddingLeft="15dp"
android:paddingRight="22dp"/>
</LinearLayout>
xml2
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:gravity="left"
android:layout_margin="0dp">
<TextView
android:id="@+id/listview1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:paddingTop="7dp"
android:paddingBottom="0dp"
android:paddingLeft="0dp"
android:paddingRight="0dp"
android:textSize="18sp"
android:textColor="#000000"
android:lines="1">
</TextView>
</LinearLayout>